Ako funguje asynchrónna metóda v C#?
sobes.tech AI
Odpoveď od AI
Asynchrónna metóda v C# umožňuje vykonávať operácie, ktoré môžu trvať dlhší čas (napríklad vstup/výstup, sieťové požiadavky), bez blokovania hlavného vlákna vykonávania.
Keď sa zavolá asynchrónna metóda označená kľúčovým slovom async, kontrola sa prenesie na kód, ktorý ju volá, až kým sa asynchrónna operácia nedokončí. Operácia sa vykonáva na pozadí (napríklad pomocou vlákna alebo systémových mechanizmov vstupu/výstupu).
Kľúčové slovo await vo vnútri asynchrónnej metódy označuje miesto, kde môže byť operácia pozastavená. Keď sa vykonanie dostane k await, kontrola sa vráti k volajúcemu kódu a pokračovanie metódy je naplánované na vykonanie, keď očakávaná operácia skončí.
Výsledok asynchrónnej operácie (alebo výnimka) sa následne vráti späť do pokračovania asynchrónnej metódy, kde sa spracováva. Stav asynchrónnej metódy je automaticky riadený prekladačom C#, ktorý ju premení na konečný automat.
public async Task<string> GetDataAsync(string url)
{
// Simulácia dlhodobej operácie vstupu/výstupu
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: vykonávanie metódy môže byť pozastavené
return result;
}
}
// Príklad volania asynchrónnej metódy
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Začiatok načítania dát...");
string data = await GetDataAsync(url); // Čakanie na dokončenie asynchrónnej operácie
Console.WriteLine("Dáta načítané: " + data.Length + " znakov.");
}