90 votes

Le SynchronizationContext actuel ne peut pas servir de TaskScheduler

Je suis à l'aide de Tâches à exécuter long de serveur en cours d'exécution appels dans mon ViewModel et les résultats sont rassemblés retour sur Dispatcher l'aide 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 je lance ma NUnit tests sur Resharper je reçois le message d'erreur lors de l'appel à FromCurrentSynchronizationContext comme:

L'actuel SynchronizationContext 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 assurer les tests sont exécutés sur le thread principal ? Toutes les autres suggestions sont les bienvenus.

136voto

Ritch Melton Points 7173
<p>Vous devrez fournir un SynchronizationContext. Voilà comment je le supporter :<pre class="lang-cs prettyprint-override"><code></code></pre></p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: