Я нашел UML не действительно полезным для очень маленьких проектов, но действительно подходящим для больших.
По существу, действительно не имеет значения, что Вы используете, просто необходимо иметь в виду две вещи:
, Таким образом, UML просто что: стандарт о том, как Вы планируете свои проекты. Если Вы наймете новых людей, то там, более вероятно, будут знать, что любой существующий стандарт - является им UML, Flowchard, Nassi-Schneiderman, безотносительно - а не Ваш вырезающий внутренний материал.
Используя UML для единственного разработчика и/или простого проекта программного обеспечения кажется излишеством мне, но при работе в более многочисленной команде, я определенно хотел бы некоторый стандарт для планирования программного обеспечения.
О, вот как сделать то, что вы пытаетесь сделать:
object retVal;
slide.Dispatcher.Invoke(new Action(() => retval = imageService.GenerateProxyImage(slide)));
Изменить: ThreadStart меня сбил с толку - это не многопоточность. Чего вы пытаетесь достичь с помощью этого примера кода ??
Это потому, что ThreadStart
не имеет возвращаемого типа ( void ()
).
Попробуйте вместо этого:
UIElement retVal = slide.Dispatcher.Invoke(new Func<UIElement>( () => imageService.GenerateProxyImage(slide)));
В документации для Dispatcher.Invoke
указано, что возвращаемое значение: «Возвращаемое значение от вызываемого делегата или пустая ссылка (ничего в Visual Basic), если делегат не имеет возвращаемого значения. " Поскольку используемый вами делегат ThreadStart
недействителен, вам необходимо использовать Func
или настраиваемый делегат с возвращаемым значением.