Ich verwende Aufgaben , um lange laufende Serveraufrufe in meinem ViewModel auszuführen, und die Ergebnisse werden bei Dispatcher
Verwendung wieder zusammengeführt TaskScheduler.FromSyncronizationContext()
. Beispielsweise:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Dies funktioniert gut, wenn ich die Anwendung ausführe. Wenn ich meine NUnit
Tests jedoch ausführe, wird Resharper
beim Aufruf die folgende Fehlermeldung angezeigt FromCurrentSynchronizationContext
:
Der aktuelle SynchronizationContext darf nicht als TaskScheduler verwendet werden.
Ich denke, das liegt daran, dass die Tests auf Arbeitsthreads ausgeführt werden. Wie kann ich sicherstellen, dass die Tests im Hauptthread ausgeführt werden? Alle anderen Vorschläge sind willkommen.
TaskScheduler.FromCurrentSynchronizationContext()
in einem Lambda verwendet und die Ausführung wurde auf einen anderen Thread verschoben. Das Problem wurde behoben, indem der Kontext außerhalb von Lambda abgerufen wurde.