21 / 20 / 3
Регистрация: 08.12.2012
Сообщений: 92
1

В чём смысл DispatcherSynchronizationContext

14.02.2020, 04:47. Показов 816. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,

задался вопросом, в каких случаях есть смысл от применения DispatcherSynchronizationContext в WPF.
При написании асинхронных операций смысла его использовать нет, так как получится дедлок, в случаях когда нужно обновить UI из другого потока, код можно исполнить просто через Dispatcher.Invoke.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2020, 04:47
Ответы с готовыми решениями:

В чем смысл проверки Background.CancelationPending BackgroundWorker
Объясните пожалуйста на пальцах, я в отчаянии, в чем смысл условия. Логика подсказывает поставить...

В чем смысл?
Привет всем! Не могу понять - в чем смысл магазинов электронных книг? Можно ведь скачать абсолютно...

В чем смысл this
Доброго время суток...Объяснить пожалуйста в чем смысл this??? Такой вопрос в билете на зачете .......

в чем смысл задания
Написать результаты натурального соединения над данными отношениями (в случае с 3 таблицами,...

1
Эксперт .NET
1835 / 1343 / 427
Регистрация: 10.06.2011
Сообщений: 2,125
14.02.2020, 10:31 2
Классы Dispatcher и DispatcherSynchronizationContext определены в сборке WindowsBase.dll. А WPF ссылается на WindowsBase.dll. Это значит, в WPF можно одинаково использовать как Dispatcher, так и DispatcherSynchronizationContext.
Но если мы заглянем в реализацию DispatcherSynchronizationContext, мы сможем увидеть, что внутри просто используется Dispatcher.

DispatcherSynchronizationContext наследуется от SynchronizationContext, который определён в System.Threading.dll (для .NET Framework), mscorlib.dll (для .NET Core), netstandard.dll (для .NET Standart)
Это значит, что если ViewModel лежит в отдельной сборке, мы можем передавать ему DispatcherSynchronizationContext как SynchronizationContext для вызова кода в основном потоке. Но более умный способ - это использовать Scheduler'ы из Rx, которые удобны для работы во ViewModel'ях.
В Rx есть не только DispatcherScheduler, но и другие на все случаи жизни: ImmediateScheduler, CurrentThreadScheduler, DispatcherScheduler, EventLoopScheduler, Scheduler.NewThread, Scheduler.ThreadPool, Scheduler.TaskPool, TestScheduler

Добавлено через 4 минуты
Цитата Сообщение от Crash94 Посмотреть сообщение
В чём смысл DispatcherSynchronizationContext
Если выполняется код WPF приложения в основном потоке и нам встречается await task, то DispatcherSynchronizationContext неявно позволяет выполнить код, следующий после await task в основном потоке.
C#
1
2
3
// UI поток
await DoSomeTaskAsync();
// выполнение продолжится в UI потоке
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2020, 10:31
Помогаю со студенческими работами здесь

В чем смысл полиморфизма
Объясните, пожалуйста, смысл полиморфизма. Не могу никак вникнуть. Где и как он используется? И...

class и id в чем смысл?
Собственно в чем разница между class и id ? В каких случаях нельзя использовать class, а в каких id?

В чем смысл указателей?
Дорогие друзья, не могу понять смысл указателей в С++? Для чего они нужны? Если не трудно на...

В чем смысл делегатов
Всем привет. Дошел до изучения делегатов (Шилдт С# 4.0 Полное руководство), там сказано что делегат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru