Jak funguje asynchronní metoda v C#?
sobes.tech AI
Odpověď od AI
Asynchronní metoda v C# umožňuje provádět operace, které mohou trvat delší dobu (například vstup/výstup, síťové požadavky), aniž by blokovala hlavní vlákno provádění.
Při volání asynchronní metody označené klíčovým slovem async se řízení předá volajícímu kódu, dokud se asynchronní operace nedokončí. Operace se provádí na pozadí (například pomocí vláknového poolu nebo systémových mechanismů vstupu/výstupu).
Klíčové slovo await uvnitř asynchronní metody označuje místo, kde může být operace pozastavena. Když se provádění dostane k await, řízení se vrací volajícímu kódu a pokračování metody je naplánováno tak, aby se provedlo, když očekávaná operace skončí.
Výsledek asynchronní operace (nebo výjimka) je poté vrácen zpět do pokračování asynchronní metody, kde je zpracován. Stav asynchronní metody je automaticky řízen kompilátorem C#, který ji přemění na konečný automat.
public async Task<string> GetDataAsync(string url)
{
// Simulace dlouhotrvající operace vstupu/výstupu
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: provádění metody může být pozastaveno
return result;
}
}
// Příklad volání asynchronní metody
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Začátek načítání dat...");
string data = await GetDataAsync(url); // Čekání na dokončení asynchronní operace
Console.WriteLine("Data načtena: " + data.Length + " znaků.");
}