Ich verwende Aufgaben , um lange laufende Serveraufrufe in meinem ViewModel auszuführen, und die Ergebnisse werden bei DispatcherVerwendung 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 NUnitTests jedoch ausführe, wird Resharperbeim 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.