Sobes.tech
Middle

Kaip veikia async raktažodis ir await operatorius C#?

sobes.tech AI

Atsakymas iš AI

async žymi metodą kaip asinchroninį, leidžiantį naudoti await jame. Tai nesukuria paties metodo asinchroniškumo, bet leidžia kompiliatoriui generuoti būsenos mašiną, kuri valdys vykdymą.

await naudojamas prieš išraišką, kuri grąžina Task arba Task<T>. Jis sustabdo dabartinio async metodo vykdymą iki kol laukiama užduotis bus užbaigta, neblokuodamas vykdymo siūlo. Po užduoties pabaigos, metodo vykdymas tęsiasi po await. Jei užduotis grąžina rezultatą (Task<T>), await tą rezultatą grąžina.

public async Task<int> GetDataAsync()
{
    // Asinchroninė operacija
    HttpClient client = new HttpClient();
    string result = await client.GetStringAsync("http://example.com"); 

    // Tęsiama po `GetStringAsync` pabaigos
    // Rezultato apdorojimas
    return result.Length; 
}