Sobes.tech
Junior

Jak se v C# používá klíčové slovo await?

sobes.tech AI

Odpověď od AI

Klíčové slovo await se v C# používá k blokování neblokujícího čekání na dokončení asynchronní operace.

Použití await je možné pouze uvnitř asynchronních metod označených modifikátorem async.

Když se provádění dostane na příkaz await, řídicí tok se vrátí volající straně a metoda je "pozastavena" dokud očekávaný úkol neskončí. Po dokončení úkolu se provádění metody obnoví z místa, kde bylo zastaveno.

To umožňuje uvolnit volající vlákno (například vlákno uživatelského rozhraní nebo vlákno webového serveru) k vykonávání jiných úkolů, čímž se zvyšuje odezva a škálovatelnost aplikace.

public async Task<string> GetDataAsync()
{
    // Simulace dlouhotrvající asynchronní operace
    await Task.Delay(2000);
    return "Data přijata";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Začátek zpracování...");
    string result = await GetDataAsync(); // Čeká na dokončení GetDataAsync bez blokování
    Console.WriteLine($"Výsledek: {result}");
    Console.WriteLine("Zpracování dokončeno.");
}

Klíčové slovo await lze použít na:

  1. Úkoly (Task, Task<T>, ValueTask, ValueTask<T>): nejběžnější scénář.
  2. awaitable typy: objekty, které mají metodu GetAwaiter(), která vrací typ s metodami IsCompleted, GetResult() a OnCompleted() (pro podporu pokračování).

Použití await činí asynchronní kód čitelnějším a podobným synchronnímu, čímž odstraňuje potřebu ručně psát kód pokračování nebo používat zpětné volání (callbacks).