Sobes.tech
Junior — Middle

Care este diferența dintre utilizarea metodelor WaitAll și WhenAll în programarea asincronă?

sobes.tech AI

Răspuns de la AI

Metodele WaitAll și WhenAll în C# sunt utilizate pentru a aștepta finalizarea mai multor sarcini, dar au diferențe importante:

  • WaitAll — este o metodă sincronică din clasa Task, care blochează firul de execuție curent până când toate sarcinile transmise se finalizează. Nu returnează rezultate și nu suportă așteptarea asincronă.

  • WhenAll — este o metodă asincronă care returnează o sarcină ce se finalizează atunci când toate sarcinile transmise sunt terminate. Permite utilizarea await pentru a aștepta fără blocare, ceea ce îmbunătățește performanța și răspunsul aplicației.

Exemplu de utilizare a WhenAll:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Toate sarcinile au fost finalizate");

Utilizarea WaitAll:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Toate sarcinile au fost finalizate");

Diferența principală este că WaitAll blochează firul, în timp ce WhenAll permite așteptarea asincronă fără blocare.