Sobes.tech
Junior

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:

  1. Aufgaben (Task, Task<T>, ValueTask, ValueTask<T>): am häufigsten.
  2. awaitable-Typen: Objekte, die eine Methode GetAwaiter() besitzen, die einen Typ mit den Methoden IsCompleted, GetResult() und OnCompleted() 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.