Verwendung von Async/Await in C#: Warten oder nicht warten? Auswirkungen auf die Ausführung
Der folgende Code enthält sechs Aufrufe der Callee
-Methode, die jeweils auf unterschiedliche Weise ausgeführt werden:
Asynchroner Aufruf (Fire-and-forget): Callee
Die Methode wird asynchron aufgerufen und wartet nicht. Die Methode läuft asynchron im Hintergrund und die aufrufende Methode setzt die Ausführung sofort fort.
Warten Sie auf einen asynchronen Aufruf: Die Callee
-Methode wird aufgerufen und verwenden Sie await
, um auf ihren Abschluss zu warten. Die aufrufende Methode wartet auf den Abschluss der Callee
-Methode, bevor sie mit der Ausführung des nachfolgenden Codes fortfährt. Stellen Sie sicher, dass die Callee
-Methode abgeschlossen ist, bevor Sie den Code danach ausführen.
Asynchrone Aufrufe über Task.Run: Die Methode Callee
wird über Task.Run
gestartet, wartet aber nicht auf das Ergebnis. Wie im Fall 1 läuft die Methode Callee
im Hintergrund und die aufrufende Methode setzt die Ausführung sofort fort.
Verwenden Sie Task.Run und warten Sie auf den asynchronen Aufruf: Die Methode Callee
wird mit Task.Run
gestartet und auf das Ergebnis gewartet. Dies entspricht Fall 2, in dem die aufrufende Methode auf den Abschluss der Callee
-Methode wartet, bevor sie fortfährt.
Asynchroner Aufruf mit Task.Run und async: Gleich wie Fall 3, außer dass die Callee
-Methode als async
deklariert ist. Das Schlüsselwort async
ermöglicht den asynchronen Aufruf einer Methode, auch wenn sie von Task.Run
umschlossen ist.
Verwenden Sie Task.Run und async und warten Sie auf den asynchronen Aufruf: Gleich wie Fall 4, außer dass die Callee
-Methode als async
deklariert ist. Ebenso ermöglicht das Schlüsselwort async
eine Wartemethode, selbst wenn sie von Task.Run
umschlossen ist.
Zusammenfassung: Die zugrunde liegende Logik dieser Aufrufe ist wie folgt:
Fall 1 und 3: Die Methode Callee
läuft in einem Hintergrundthread und die aufrufende Methode setzt die Ausführung sofort fort.
Fall 2 und 4: Die aufrufende Methode wartet auf den Abschluss der Methode Callee
, bevor sie den nachfolgenden Code ausführt.
Fall 5 und 6: Dies sind asynchrone Aufrufe, die Task.Run
für zusätzliche Parallelverarbeitung verwenden. Das Schlüsselwort async
ermöglicht jedoch das Warten auf sie bei Bedarf.
Das obige ist der detaillierte Inhalt vonAsync/Await in C#: Warten oder nicht warten? Die Auswirkungen auf die Ausführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!