C# LanguageAsync-Await

Einführung

In C # blockiert eine als async deklarierte Methode nicht innerhalb eines synchronen Prozesses, wenn Sie E / A-basierte Vorgänge verwenden (z. B. Webzugriff, Arbeiten mit Dateien, ...). Das Ergebnis solcher async-markierter Methoden kann über die Verwendung des await Schlüsselworts await .

Bemerkungen

Eine async Methode kann void Task oder Task<T> .

Der Rückgabetyp Task wartet, bis die Methode abgeschlossen ist, und das Ergebnis wird void . Task<T> gibt einen Wert vom Typ T nachdem die Methode abgeschlossen ist.

async Methoden sollten Task oder Task<T> im Gegensatz zu void in fast allen Fällen zurückgeben. async void methoden können nicht await , was zu einer vielzahl von problemen führt. Das einzige Szenario, in dem ein async void sollte void ist im Fall eines Event-Handlers.

async / await funktioniert, indem Sie Ihre async Methode in eine Zustandsmaschine umwandeln. Dazu erstellt es hinter den Kulissen eine Struktur, in der der aktuelle Status und beliebige Kontexte (wie lokale Variablen) MoveNext() , und eine MoveNext() Methode MoveNext() wird, um den MoveNext() (und den zugehörigen Code auszuführen), wenn ein erwartetes Erwarten beendet wird.

Async-Await Verwandte Beispiele