Dispatcher.CurrentDispatcher vs. Application.Current.Dispatcher

Каковы различия между Dispatcher.CurrentDispatcherSystem.Windows.Threading ) и Application.Current.DispatcherSystem.Windows )?

Мой кишок говорит мне, что Application.Current.Dispatcher никогда не изменится и будет глобальным для всех streamов в текущем приложении, а Dispatcher.CurrentDispatcher может создать новый экземпляр Dispatcher зависимости от streamа, из которого он был вызван.

Это верно?

Если это так, является целью Dispatcher.CurrentDispatcher первую очередь для многопоточного пользовательского интерфейса?

3 Solutions collect form web for “Dispatcher.CurrentDispatcher vs. Application.Current.Dispatcher”

Мой кишок говорит мне, что Application.Current.Dispatcher никогда не изменится и будет глобальным для всех streamов в текущем приложении, а Dispatcher.CurrentDispatcher может создать новый экземпляр Диспетчера в зависимости от streamа, из которого он был вызван.

Это верно.

Кроме того, нет никакого смысла в доступе к Dispatcher.CurrentDispatcher из streamа, отличного от UI. Он ничего не сделает, если вы не вызовете Dispatcher.Run , и переход в бесконечный цикл сообщений – это не то, что вы хотите делать из рабочих streamов.

Так:

  • В наиболее распространенном сценарии , где ваше приложение имеет только один stream пользовательского интерфейса, Application.Current.Dispatcher и Dispatcher.CurrentDispatcher из streamа пользовательского интерфейса возвращают один и тот же экземпляр. Какой из них вы используете, это просто вопрос предпочтения.

  • Если ваше приложение имеет более одного streamа пользовательского интерфейса, каждый DispatcherObject будет постоянно связан с диспетчером streamа пользовательского интерфейса, который был создан при построении. В этом случае Application.Current.Dispatcher будет ссылаться на диспетчера streamа, к которому применяется ваше приложение; вы не сможете использовать его для публикации сообщений на элементы управления, принадлежащие другим вашим streamам пользовательского интерфейса.

Проще говоря…

Dispatcher.CurrentDispatcher получает диспетчер для текущего streamа . Итак, если вы ищете Диспетчер streamов пользовательского интерфейса из фонового процесса, не используйте это.

Application.Current.Dispatcher всегда будет предоставлять диспетчер streamов пользовательского интерфейса, поскольку это stream, который объединяет единственный экземпляр приложения.

Мой кишок говорит мне, что Application.Current.Dispatcher никогда не изменится и будет глобальным для всех streamов в текущем приложении, а Dispatcher.CurrentDispatcher может создать новый экземпляр Диспетчера в зависимости от streamа, из которого он был вызван.

Это верно, Application.Current.Dispatcher – это свойство экземпляра приложения, которое назначается при построении диспетчером текущего streamа. И в документации Dispatcher.CurrentDispatcher указывается:

Получает диспетчер для текущего streamа и создает новый диспетчер, если он еще не связан с streamом.


Если это так, является целью Dispatcher.CurrentDispatcher в первую очередь для многопоточного пользовательского интерфейса?

Возможно, я не сталкивался с какой-либо проблемой при получении диспетчера фонового streamа, поскольку у вас обычно нет пользовательских интерфейсов, к которым вы можете отправлять операции.

Interesting Posts

В чем разница между командами «su -s» и «sudo-s»?

«Less» экран очистки команды при выходе – как его отключить?

Как я могу восстановить файлы, когда папка отображается пустым, но файлы не удаляются?

Есть ли инструмент для количественной оценки того, сколько отстает Dragon NaturallySpeaking?

Atikmdag.sys + 127f8 BSOD с драйвером режима ядра ATI Radeon

Тест JUnit для System.out.println ()

Необходимо усечь переменную% username% в Windows 7 до семи символов

Почему ключевое слово «this» требуется для вызова метода расширения из расширенного classа

Поддержка браузера для CSS-сетки

Вызов метода на родительской странице из пользовательского элемента управления

Как я могу подсчитать продолжительность видеозвонков в Skype?

Как подождать 5 секунд с помощью jQuery?

Изменение поведения адресной строки Firefox

Действительные символы идентификатора в Scala

GetView Vs. BindView в пользовательском CursorAdapter?

Давайте будем гением компьютера.