Понимание диспетчера Silverlight

У меня была проблема доступа к Invalid Cross Thread, но я провел небольшое исследование, и мне удалось ее исправить с помощью Dispatcher.

Теперь в моем приложении есть объекты с отложенной загрузкой. Я бы сделал асинхронный вызов с использованием WCF и, как обычно, использую Dispatcher, чтобы обновить мои объекты DataContext, однако в этом сценарии это не сработало. Однако я нашел решениеВот, Вот что я не понимаю.

В моем UserControl у меня есть код для вызоватумблер метод на моем объекте. Вызов этого метода внутри Dispatcher, как это.

Dispatcher.BeginInvoke( () => _CurrentPin.ToggleInfoPanel() );

Как я уже говорил, этого было недостаточно, чтобы удовлетворить Silverlight. Я должен был сделатьдругой Диспетчерский звонок внутри моего объекта. Мой объектНЕ UIElement, но простой класс, который обрабатывает все свои собственные загрузки / сохранения.

Так что проблема была решена путем вызова

Deployment.Current.Dispatcher.BeginInvoke( () => dataContext.Detail = detail );

в моем классе.

Почему мне пришлось дважды позвонить Диспетчеру, чтобы добиться этого? Разве звонка на высоком уровне не должно быть достаточно? Есть ли разница междуDeployment.Current.Dispatcher а Диспетчер в UIElement?

Ответы на вопрос(2)

Ваш ответ на вопрос