Я использую задачи для выполнения длительных вызовов сервера в моей модели просмотра, и результаты снова упорядочиваются при 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.
Я предполагаю, что это потому, что тесты выполняются в рабочих потоках. Как я могу убедиться, что тесты выполняются в основном потоке? Любые другие предложения приветствуются.
TaskScheduler.FromCurrentSynchronizationContext()
лямбда-выражение, и выполнение было отложено до другого потока. получение контекста за пределами лямбда решило проблему.