如何使用Dispatcher.Invoke返回值?

ton*_*oni 30 wpf return invoke dispatcher

任何人都知道如何从中返回值Dispatcher.Invoke?我想返回ComboBox的选定索引.

谢谢!

use*_*652 31

还有另一种从Invoke()返回值的方法:

object oIsLoaded = container.Dispatcher.Invoke( new Func<bool> ( () =>
    {
        return container.IsLoaded;
    })
);
Run Code Online (Sandbox Code Playgroud)

顺便说一下,初始代码(与委托一起工作)很可能根本不会修改oIsLoaded; 所以我宁愿用a Func<>来从这种函数中返回一个值.


小智 30

int result = -1;

// this is synchronous
myCombo.Invoke(() => 
{
  result = myCombo.SelectedIndex;
});

return result;
Run Code Online (Sandbox Code Playgroud)

当然,这有点笨重.更好的设计是在您的VM中实现INotifyPropertyChanged,创建一个SelectedIndex属性并将SelectedIndex组合框的属性绑定到它.INPC绑定是线程不敏感的(3.5或4.0+,我不记得是哪个),因此您可以从VM中的不同线程读取和更新这些属性,而无需担心.