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' Dispatcherutilisation 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 NUnittests, Resharperj'obtiens le message d'erreur sur l'appel à FromCurrentSynchronizationContextcomme:
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.