Sobes.tech
Junior

Ako sa v C# používa kľúčové slovo await?

sobes.tech AI

Odpoveď od AI

Kľúčové slovo await sa v C# používa na neblokujúce čakanie na dokončenie asynchrónnej operácie.

Použitie await je možné iba v rámci asynchrónnych metód označených modifikátorom async.

Keď vykonávanie dosiahne príkaz await, tok riadenia sa vráti volajúcemu a metóda je "pozastavená" až do ukončenia očakávanej úlohy. Po ukončení úlohy sa vykonávanie metódy obnoví od miesta, kde bolo zastavené.

Toto umožňuje uvoľniť volajúci vlákno (napríklad vlákno používateľského rozhrania alebo vlákno webového servera) na vykonávanie iných úloh, čím sa zlepšuje odozva a škálovateľnosť aplikácie.

public async Task<string> GetDataAsync()
{
    // Simulácia dlhodobej asynchrónnej operácie
    await Task.Delay(2000);
    return "Dáta prijaté";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Začiatok spracovania...");
    string result = await GetDataAsync(); // Čaká na dokončenie GetDataAsync bez blokovania
    Console.WriteLine($"Výsledok: {result}");
    Console.WriteLine("Spracovanie ukončené.");
}

Kľúčové slovo await sa môže použiť na:

  1. Úlohy (Task, Task<T>, ValueTask, ValueTask<T>): najbežnejší scenár.
  2. awaitable typy: objekty, ktoré majú metódu GetAwaiter(), ktorá vracia typ s metódami IsCompleted, GetResult() a OnCompleted() (na podporu pokračovania).

Použitie await robí asynchrónny kód čitateľnejším a podobným synchronnému, čím odstraňuje potrebu manuálneho písania kódu pokračovania alebo používania callbackov.