Sobes.tech
Junior

Kako se koristi ključna reč await u C#?

sobes.tech АИ

Одговор од АИ

Ključna riječ await se u C# koristi za neblokirajuće čekanje na završetak asinhrone operacije.

Korišćenje await je moguće samo unutar asinhronih metoda označenih sa modifikatorom async.

Kada izvršenje dosegne naredbu await, tok kontrole se vraća pozivaocu, a metoda je "pauzirana" dok se očekivani zadatak ne završi. Nakon završetka zadatka, izvršenje metode se nastavlja od mjesta gdje je prekinuto.

Ovo omogućava oslobađanje pozivajućeg thread-a (npr. thread korisničkog interfejsa ili web server thread-a) za izvršavanje drugih zadataka, poboljšavajući odzivnost i skalabilnost aplikacije.

public async Task<string> GetDataAsync()
{
    // Simulacija dugotrajne asinhrone operacije
    await Task.Delay(2000);
    return "Podaci primljeni";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Početak obrade...");
    string result = await GetDataAsync(); // Čekamo završetak GetDataAsync bez blokiranja
    Console.WriteLine($"Rezultat: {result}");
    Console.WriteLine("Obrada završena.");
}

Ključna riječ await se može primijeniti na:

  1. Zadacima (Task, Task<T>, ValueTask, ValueTask<T>): najčešći scenarij.
  2. awaitable tipovima: objektima koji imaju metodu GetAwaiter(), koja vraća tip sa metodama IsCompleted, GetResult() i OnCompleted() (za podršku nastavku).

Korišćenje await čini asinhroni kod čitljivijim i sličnijim sinhronom, eliminirajući potrebu za ručnim pisanjem koda za nastavak ili korišćenjem callback-ova.