Я використовую Завдання, щоб виконувати тривалі дзвінки на сервер у своєму ViewModel, і результати повторно Dispatcherвикористовуються TaskScheduler.FromSyncronizationContext(). Наприклад:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Це добре працює, коли я виконую програму. Але коли я запускаю NUnitтести, Resharperя отримую повідомлення про помилку на дзвінку FromCurrentSynchronizationContextяк:
Поточний SynchronizationContext не може використовуватися як програмування завдань.
Я думаю, це тому, що тести виконуються на робочих потоках. Як я можу забезпечити виконання тестів на основній темі? Будь-які інші пропозиції вітаються.
TaskScheduler.FromCurrentSynchronizationContext()всередині лямбда і виконання було відкладено на інший потік. виведення контексту поза лямбда вирішило проблему.