Sobes.tech
Junior

Cum se folosește cuvântul cheie await în C#?

sobes.tech AI

Răspuns de la AI

Cuvântul cheie await este utilizat în C# pentru a aștepta în mod neblocant finalizarea unei operații asincrone.

Utilizarea await este posibilă numai în interiorul metodelor asincrone marcate cu modificatorul async.

Când execuția ajunge la instrucțiunea await, fluxul de control se întoarce către apelant, iar metoda este "suspendată" până când sarcina așteptată se finalizează. După finalizarea sarcinii, execuția metodei se reia de la locul unde a fost oprită.

Acest lucru permite eliberarea thread-ului care a făcut apelul (de exemplu, thread-ul interfeței utilizatorului sau thread-ul serverului web) pentru a executa alte sarcini, îmbunătățind răspunsul și scalabilitatea aplicației.

public async Task<string> GetDataAsync()
{
    // Simulare a unei operații asincrone de durată lungă
    await Task.Delay(2000);
    return "Datele au fost primite";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Începe procesarea...");
    string result = await GetDataAsync(); // Așteaptă finalizarea lui GetDataAsync fără blocare
    Console.WriteLine($"Rezultat: {result}");
    Console.WriteLine("Procesarea s-a încheiat.");
}

Cuvântul cheie await poate fi aplicat la:

  1. Task-uri (Task, Task<T>, ValueTask, ValueTask<T>): scenariul cel mai comun.
  2. tipuri awaitable: Obiecte care au o metodă GetAwaiter(), care returnează un tip cu metodele IsCompleted, GetResult() și OnCompleted() (pentru suportul continuării).

Utilizarea await face ca codul asincron să fie mai ușor de citit și mai asemănător cu codul sincron, eliminând necesitatea de a scrie manual cod de continuare sau de a folosi callback-uri.