Я використовую Завдання, щоб виконувати тривалі дзвінки на сервер у своєму 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()
всередині лямбда і виконання було відкладено на інший потік. виведення контексту поза лямбда вирішило проблему.