2010-05-25 2 views
0

Я использую веб-Refernce вызов в новой рабочей нити в моем приложении следующим образом:многопоточность МОФ

Thread callRunner = new Thread(delegate() 
    { _mediator.IncomingCallDetails(phoneNumber); }); 
callRunner.Start() ; 

_mediator вызывает веб-Refernce и воспроизводить вызывающему абоненту в случае следующим образом:

void IncomingCallComplited(IncomingCallEventArg args) 
{ 
    Caller = args.Caller; 
    Lodgers = args.Lodgers; 
    PreviousMissions = args.PreviousMissions; 
} 

Caller, Lodgers и PreviousMissions - это объекты объекта, которые привязаны к элементу GUI, так как теперь привязка работает нормально, и я могу видеть значения из веб-ссылки на экране, мой вопрос заключается в том, следует ли использовать диспетчер в случае или в любой другой этап? и если я это сделаю, может кто-нибудь объяснить, почему? Благодаря
Эран

ответ

0

На самом деле, связывающая система заботится о том, что для вас, так что вам не нужна явно маршала вызова в поток пользовательского интерфейса. Однако это поведение не задокументировано (если только я его не пропустил), поэтому я не уверен, что вам следует полагаться на него ...

Также обратите внимание, что хотя событие PropertyChanged правильно перемаркировано по потокам системой привязки, Событие CollectionChanged: не. Поэтому, если вы добавляете данные из другого потока в ObservableCollection, который связан с пользовательским интерфейсом, вам необходимо позвонить Dispatcher.Invoke. Или вы можете использовать это custom ObservableCollection class, что вызывает событие CollectionChanged в потоке пользовательского интерфейса

+0

Спасибо Thomas, Это было именно то, что мне нужно знать – Eran