Ответ 1
AFAIK, при использовании WPF объект SynchronizationContext.Current
имеет тип DispatcherSynchronizationContext
, который на самом деле является только оболочкой вокруг объекта Dispatcher и методы Post
и Send
просто делегируются Dispatcher.BeginInvoke
и Dispatcher.Invoke
.
Итак, даже если вы решите использовать SynchronizationContext
, я думаю, что вы в конечном итоге вызываете диспетчера за кулисами.
Кроме того, я считаю, что довольно сложно использовать SynchronizationContext, поскольку вам нужно передать ссылку на текущий контекст на все потоки, которые необходимо вызвать в ваш интерфейс.