Używam zadań do uruchamiania długotrwałych wywołań serwera w moim ViewModel, a wyniki są kierowane z powrotem przy Dispatcher
użyciu TaskScheduler.FromSyncronizationContext()
. Na przykład:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Działa to dobrze, gdy uruchamiam aplikację. Ale kiedy uruchamiam NUnit
testy Resharper
, otrzymuję komunikat o błędzie w połączeniu z FromCurrentSynchronizationContext
:
Bieżący SynchronizationContext nie może być używany jako TaskScheduler.
Wydaje mi się, że dzieje się tak, ponieważ testy są uruchamiane na wątkach roboczych. Jak mogę upewnić się, że testy są uruchamiane w głównym wątku? Wszelkie inne sugestie są mile widziane.
TaskScheduler.FromCurrentSynchronizationContext()
wewnątrz lambdy i wykonanie zostało odłożone na inny wątek. pobranie kontekstu poza lambdę rozwiązało problem.