Nachverfolgen, ob eine asynchrone / wartbare Aufgabe ausgeführt wird

8

Ich versuche, von dem ereignisbasierten asynchronen Muster überzugehen, wo ich laufende Methoden mit eindeutigen IDs und dem asynoperationmanager verfolgt habe.
Da dies jetzt aus Windows 8 Apps gelöscht wurde, versuche ich mit Async / Await einen ähnlichen Effekt zu erzielen, kann aber nicht genau herausfinden, wie.
Was ich versuche zu erreichen, ist etwas wie

%Vor%

Der Teil, mit dem ich Probleme habe, ist herauszufinden, ob die Methode läuft. Ich habe versucht, eine Aufgabe zu erstellen und den Status von sowohl dem als auch dem Status der asynchronen Methode zu betrachten, aber sie scheinen nicht der richtige Ort zu sein. Danke

UPDATE: Dies ist der aktuelle Code, den ich in .net 4 verwende, um das gleiche Ergebnis zu erzielen. _updateMetaDataAsync ist eine Klasse, die auf dem ereignisbasierten asynchronen Muster basiert.

%Vor%     
Oli 23.08.2012, 18:52
quelle

3 Antworten

6

async / await selbst soll zum Erstellen sequenzieller Operationen verwendet werden, die asynchron vom UI-Thread ausgeführt werden. Sie können dafür sorgen, dass parallele Operationen ausgeführt werden, aber die Operationen "verbinden" sich in der Regel mit einer Art Ergebnis zum UI-Thread zurück. (Es gibt auch die Möglichkeit, Arten von asynchronen Operationen mit await zu "feuern und zu vergessen", aber das wird nicht empfohlen). d. h. es ist nichts in async / await enthalten, um Fortschrittsberichte zu unterstützen.

Sie können einen Fortschritt außerhalb des Codes erzielen, indem Sie async / await ; aber Sie müssen neue Fortschrittsschnittstellen wie IProgress<T> verwenden. Weitere Informationen zur Fortschrittsberichterstattung mit async / await finden Sie unter Ссылка . Zu diesem Zweck sollte nur ein IProgress -Delegat statt eines Progress -Ereignisses aufgerufen werden.

    
Peter Ritchie 23.08.2012, 20:27
quelle
2

Wenn Sie eine Task verwenden, die Sie erstellt haben, können Sie die Status Eigenschaft (oder sehen Sie sich an Task.IsCompleted wenn die Fertigstellung der einzige Status ist, an dem Sie interessiert sind.

Das heißt, await wird nicht zurückgeben, bis die Operation abgeschlossen ist, eine Ausnahme auslöst oder abbricht. Sie können grundsätzlich davon ausgehen, dass Ihre Aufgabe nicht abgeschlossen ist, wenn Sie noch auf "Warten" warten.

    
Reed Copsey 23.08.2012 18:56
quelle
0
%Vor%

Der zusätzliche Bonus ist, dass Sie sehen können, wie viele Gegenstände in der Schlange sitzen!

    
Toby Johnson 17.07.2015 04:39
quelle

Tags und Links