Ich habe eine Aufgabe, die schwere Arbeit leistet.
Ich muss sein Ergebnis nach LogContent
Dies ist die Eigenschaft:
%Vor% Problem ist, dass _traceEntryQueue
Daten an die UI gebunden sind, und aus diesem Grund habe ich eine Ausnahme bei Code wie diesem.
Also, meine Frage ist, wie man es richtig funktioniert?
Sie müssen die ContinueWith-Task auf dem UI-Thread ausführen. Dies kann mit dem TaskScheduler des UI-Threads mit der überladenen Version der ContinueWith-Methode erreicht werden , dh.
%Vor%Hier ist ein guter Artikel: Parallele Programmierung: Aufgabenplaner und Synchronisationskontext .
Sehen Sie sich die Task.ContinueWith () -Methode an.
Beispiel:
%Vor% Seit .NET 4.5 unterstützt async
/ await
keywords (siehe auch Task.Run vs. Task.Factory.StartNew ):
Sie können Dispatcher
verwenden, um Code im UI-Thread aufzurufen. Sehen Sie sich den Artikel Mit dem WPF-Dispatcher arbeiten
Wenn Sie async / await verwenden, sehen Sie hier einen Beispielcode, der zeigt, wie Sie eine Task planen, die auf dem GUI-Thread ausgeführt wird. Platzieren Sie diesen Code am unteren Ende des Stapels aller async / await-Aufrufe, um zu vermeiden, dass die WPF-Laufzeit Fehler mit Code auslöst, der nicht im GUI-Thread ausgeführt wird.
Funktioniert mit WPF + MVVM, getestet unter VS 2013.
%Vor%Tags und Links wpf .net c# task-parallel-library task