多线程wpf

时间:2010-05-25 08:08:22

标签: .net wpf binding

我在我的应用程序中使用新的工作线程中的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还是任何其他阶段?如果我能这样做,请解释原因吗? 由于
叶兰

1 个答案:

答案 0 :(得分:0)

实际上,绑定系统会为您处理,因此您不需要显式封送对UI线程的调用。但是,这种行为没有记录(除非我错过了),所以我不确定你应该依赖它......

另请注意,尽管PropertyChanged事件在绑定系统中跨线程正确编组,但CollectionChanged事件。因此,如果您要将另一个线程中的数据添加到绑定到UI的ObservableCollection,则需要调用Dispatcher.Invoke。或者您可以使用此custom ObservableCollection class,它会在UI线程上引发CollectionChanged事件