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