У меня была проблема доступа к Invalid Cross Thread, но я провел небольшое исследование, и мне удалось исправить ее с помощью Dispatcher.
Теперь в моем приложении есть объекты с отложенной загрузкой.Я бы сделал асинхронный вызов с использованием WCF и, как обычно, использую Dispatcher, чтобы обновить мои объекты DataContext, однако в этом сценарии это не сработало.Однако я нашел решение здесь .Вот что я не понимаю.
В моем UserControl у меня есть код для вызова метода Toggle для моего объекта.Вызов этого метода внутри Dispatcher, например, так.
Dispatcher.BeginInvoke( () => _CurrentPin.ToggleInfoPanel() );
Как я уже говорил, этого было недостаточно для удовлетворения Silverlight.Мне пришлось сделать еще один вызов диспетчера в моем объекте.Мой объект НЕ UIElement , а простой класс, который обрабатывает все свои собственные загрузки / сохранения.
Итак, проблема была решена путем вызова
Deployment.Current.Dispatcher.BeginInvoke( () => dataContext.Detail = detail );
в моем классе.
Почему мне пришлось дважды вызывать Диспетчер, чтобы добиться этого?Разве звонка на высоком уровне не должно быть достаточно?Есть ли разница между Deployment.Current.Dispatcher и Диспетчером в UIElement?