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:
- Task-uri (Task, Task<T>, ValueTask, ValueTask<T>): scenariul cel mai comun.
- tipuri awaitable: Obiecte care au o metodă
GetAwaiter(), care returnează un tip cu metodeleIsCompleted,GetResult()șiOnCompleted()(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.