Sobes.tech
Junior

Kuidas kasutatakse võtmesõna await C#-s?

sobes.tech AI

Vastus AI-lt

Võtmesõna await kasutatakse C#-s asünkroonse operatsiooni mitte-blokeerivaks ootamiseks.

await kasutamine on võimalik ainult asünkroonsetes meetodites, mis on märgitud async modifikaatoriga.

Kui täitmine jõuab await käsuni, tagastatakse juhtimisvoog kutsuja poole ning meetod "peatub" kuni oodatav ülesanne lõpetatakse. Pärast ülesande lõpetamist jätkub täitmine sealt, kus see jäi.

See võimaldab vabastada kutsuva niidi (näiteks kasutajaliidese niidi või veebiserveri niidi), et teostada teisi ülesandeid, parandades rakenduse reageerimisvõimet ja skaleeritavust.

public async Task<string> GetDataAsync()
{
    // Pikaajalise asünkroonse operatsiooni simulatsioon
    await Task.Delay(2000);
    return "Andmed on saadud";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Alustame töötlemist...");
    string result = await GetDataAsync(); // Ootame GetDataAsync lõpetamist ilma blokeerimata
    Console.WriteLine($"Tulemus: {result}");
    Console.WriteLine("Töötlemine lõpetatud.");
}

Võtmesõna await saab kasutada:

  1. Ülesannete (Task, Task<T>, ValueTask, ValueTask<T>): Kõige levinum stsenaarium.
  2. Ootavate tüüpide: Objektid, millel on meetod GetAwaiter(), mis tagastab tüübi koos meetoditega IsCompleted, GetResult() ja OnCompleted() (toetuse jaoks jätkamise jaoks).

await kasutamine muudab asünkroonse koodi loetavamaks ja sarnasemaks sünkroneerilisele, vabastades vajadusest kirjutada jätkamiskoodi või kasutada tagasikutsumisi (callbacks).