WPF Dispatcher Invoke返回值始终为null

6 c# wpf dispatcher backgroundworker

我调用了一个方法,它返回一个UIElement我使用的调用Dispatcher,下面是代码.

但是,Dispatcher调用的返回值总是为NULL,任何想法?

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;
}
Run Code Online (Sandbox Code Playgroud)

Zen*_*uka 7

这是因为ThreadStart没有返回类型(void()).

试试这个:

UIElement retVal = slide.Dispatcher.Invoke(new Func<UIElement>( () => imageService.GenerateProxyImage(slide))); 
Run Code Online (Sandbox Code Playgroud)


Ana*_*tts 7

噢,这是你要做的事情:

object retVal;
slide.Dispatcher.Invoke(new Action(() => retval = imageService.GenerateProxyImage(slide)));
Run Code Online (Sandbox Code Playgroud)

编辑: ThreadStart让我失望 - 这不是多线程的.你想用这个代码示例完成什么?