Mam wywołanie metody, która zwraca UIElement
, które wywołuję za pomocą Dispatcher
, poniżej jest kod.Dyspozytor WPF Wywołanie wartości zwracanej jest zawsze zerowe
Jednak wartość zwracana wywołania Dispatcher
jest zawsze NULL, jakieś pomysły?
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
var slides = (IList<UIElement>)e.Argument;
var bmpSlides = new List<UIElement>();
var imageService = new ImageService();
int count = 0;
foreach (UIElement slide in slides)
{
object retVal = slide.Dispatcher.Invoke(
new ThreadStart(() => imageService.GenerateProxyImage(slide)));
bmpSlides.Add(imageService.GenerateProxyImage(slide));
_backgroundWorker.ReportProgress(count/100 * slides.Count);
count++;
}
e.Result = bmpSlides;
}
To zadziała, ale wydaje mi się, że korzystanie z Func jest czystsze, jak opisano w innych odpowiedziach. –
Dobrze faktycznie Dispatcher.Invoke czeka na zakończenie wątku, Dispatcher.BeginInvoke nie ... – Zenuka