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:
- Zadacima (Task, Task<T>, ValueTask, ValueTask<T>): najčešći scenarij.
- awaitable tipovima: objektima koji imaju metodu
GetAwaiter(), koja vraća tip sa metodamaIsCompleted,GetResult()iOnCompleted()(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.