J'utilise Tâches pour exécuter des appels de serveur de longue durée dans mon ViewModel et les résultats sont marshallés en retour sur le Dispatcher
en utilisant TaskScheduler.FromSyncronizationContext()
. Par exemple :
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Cela fonctionne correctement lorsque j'exécute l'application. Mais lorsque j'exécute mon NUnit
tests sur Resharper
J'obtiens le message d'erreur lors de l'appel à FromCurrentSynchronizationContext
comme :
Le contexte de synchronisation actuel ne peut pas être utilisé comme planificateur de tâches.
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 ? Toute autre suggestion est la bienvenue.
0 votes
Dans mon cas, j'ai utilisé
TaskScheduler.FromCurrentSynchronizationContext()
à l'intérieur d'une lambda et l'exécution a été reportée à un autre thread. l'obtention du contexte en dehors de la lambda a résolu le problème.