我在我的应用程序中使用新的工作线程中的web refernce调用如下:
Thread callRunner = new Thread(delegate()
{ _mediator.IncomingCallDetails(phoneNumber); });
callRunner.Start() ;
_mediator调用web引用并在事件中重放给调用者,如下所示:
void IncomingCallComplited(IncomingCallEventArg args)
{
Caller = args.Caller;
Lodgers = args.Lodgers;
PreviousMissions = args.PreviousMissions;
}
Caller,Lodgers和PreviousMissions是绑定到GUI元素的对象的属性,因为现在绑定工作正常,我可以在屏幕上看到Web引用的值我的问题是我应该在事件中使用Dispatcher还是任何其他阶段?如果我能这样做,请解释原因吗?
由于
叶兰
答案 0 :(得分:0)
实际上,绑定系统会为您处理,因此您不需要显式封送对UI线程的调用。但是,这种行为没有记录(除非我错过了),所以我不确定你应该依赖它......
另请注意,尽管PropertyChanged
事件在绑定系统中跨线程正确编组,但CollectionChanged
事件不。因此,如果您要将另一个线程中的数据添加到绑定到UI的ObservableCollection
,则需要调用Dispatcher.Invoke
。或者您可以使用此custom ObservableCollection
class,它会在UI线程上引发CollectionChanged
事件