Я предпочитаю планирование Task
для потока пользовательского интерфейса. Вы можете получить планировщик потока пользовательского интерфейса, вызвав TaskScheduler.FromCurrentSynchronizationContext
в потоке пользовательского интерфейса. MSDN имеет пример здесь .
Я обычно предпочитаю решения на основе SynchronizationContext
вместо решений на основе Dispatcher
, потому что они не привязаны к WPF / Silverlight. Таким образом, можно написать общий уровень бизнес-объектов, который обрабатывает синхронизацию, но можно использовать из WPF, ASP.NET, Windows Forms, Win32 Services и т. Д.