Wie wird das Schlüsselwort await in C# verwendet?
sobes.tech KI
Antwort von AI
Das Schlüsselwort await wird in C# verwendet, um asynchronen Vorgängen nicht blockierend zu warten.
Die Verwendung von await ist nur innerhalb asynchroner Methoden möglich, die mit dem Modifikator async gekennzeichnet sind.
Wenn die Ausführung die Anweisung await erreicht, wird der Steuerfluss an den Aufrufer zurückgegeben, und die Methode "pausiert", bis die erwartete Aufgabe abgeschlossen ist. Nach Abschluss der Aufgabe wird die Ausführung der Methode an der Stelle wieder aufgenommen, an der sie gestoppt wurde.
Dies ermöglicht es, den aufrufenden Thread (z.B. den UI-Thread oder den Web-Server-Thread) freizugeben, um andere Aufgaben auszuführen, was die Reaktionsfähigkeit und Skalierbarkeit der Anwendung verbessert.
public async Task<string> GetDataAsync()
{
// Simulation einer lang andauernden asynchronen Operation
await Task.Delay(2000);
return "Daten empfangen";
}
public async Task ProcessDataAsync()
{
Console.WriteLine("Verarbeitung beginnt...");
string result = await GetDataAsync(); // Wartet auf Abschluss von GetDataAsync ohne Blockierung
Console.WriteLine($"Ergebnis: {result}");
Console.WriteLine("Verarbeitung abgeschlossen.");
}
Das Schlüsselwort await kann angewendet werden auf:
- Aufgaben (Task, Task<T>, ValueTask, ValueTask<T>): am häufigsten.
- awaitable-Typen: Objekte, die eine Methode
GetAwaiter()besitzen, die einen Typ mit den MethodenIsCompleted,GetResult()undOnCompleted()zurückgibt (zur Unterstützung der Fortsetzung).
Die Verwendung von await macht asynchronen Code lesbarer und ähnlicher an synchronen Code, indem es die Notwendigkeit eliminiert, Fortsetzungscode manuell zu schreiben oder Callbacks zu verwenden.