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:
- Úkoly (Task, Task<T>, ValueTask, ValueTask<T>): nejběžnější scénář.
- awaitable typy: objekty, které mají metodu
GetAwaiter(), která vrací typ s metodamiIsCompleted,GetResult()aOnCompleted()(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).