J'utilise des tâches pour exécuter des appels de serveur de longue durée dans mon ViewModel et les résultats sont rassemblés lors de l' Dispatcher
utilisation TaskScheduler.FromSyncronizationContext()
. Par exemple:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Cela fonctionne bien lorsque j'exécute l'application. Mais quand j'exécute mes NUnit
tests, Resharper
j'obtiens le message d'erreur sur l'appel à FromCurrentSynchronizationContext
comme:
Le SynchronizationContext actuel ne peut pas être utilisé comme un TaskScheduler.
Je suppose que c'est parce que les tests sont exécutés sur des threads de travail. Comment puis-je m'assurer que les tests sont exécutés sur le thread principal? N'importe quelles autres suggestions sont les bienvenues.
TaskScheduler.FromCurrentSynchronizationContext()
intérieur d'un lambda et l'exécution a été reportée à un autre thread. obtenir le contexte en dehors de lambda a résolu le problème.