Разница между методами this.Dispatcher.BeginInvoke () и Deployment.Current.Dispatcher.BeginInvoke () в Silverlight - PullRequest
7 голосов
/ 26 сентября 2011

Я знаю, что Dispatcher.BeginInvoke () используется для выполнения некоторого фрагмента кода в потоке пользовательского интерфейса. Недавно я заметил, что есть другой способ получить экземпляр Dispatcher с помощью класса 'Deployment'.Я хотел бы знать,

Существует ли разница между вызовом функций this.Dispatcher.BeginInvoke () и Deployment.Current.Dispatcher.BeginInvoke ()

когда мне следует использовать this.Dispatcher.BeginInvoke () и Deployment.Current.Dispatcher.BeginInvoke () ?

Спасибо, Алекс

1 Ответ

11 голосов
/ 26 сентября 2011

Краткий ответ: они одинаковы в Silverlight, поэтому используйте более короткий (если доступен в контексте вашего кода).

this.Dispatcher.BeginInvoke() гарантирует, что он запущен в потоке, под которым работает данный элемент управления.

Deployment.Current.Dispatcher.BeginInvoke() обеспечивает запуск в основном потоке пользовательского интерфейса.

Они всегда одинаковы в Silverlight (и обычно одинаковы в WPF, если вы не создали дополнительные потоки пользовательского интерфейса).

Используйте this.Dispatcher.BeginInvoke(), если в текущем контексте нет диспетчера, а вместо этого используйте глобальный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...