Sobes.tech
Junior — Middle

Milline on erinevus Meetodite WaitAll ja WhenAll kasutamisel asünkroonilises programmeerimises?

sobes.tech AI

Vastus AI-lt

C# keeles kasutatakse meetodeid WaitAll ja WhenAll mitme ülesande lõpetamise ootamiseks, kuid neil on olulised erinevused:

  • WaitAll — on sünkrone meetod Task klassist, mis blokeerib praeguse voolu kuni kõik antud ülesanded on lõpetatud. See ei tagasta tulemust ega toeta asünkroonset ootamist.

  • WhenAll — on asünkroonne meetod, mis tagastab ülesande, mis lõpeb siis, kui kõik antud ülesanded on lõpetatud. See võimaldab kasutada await ootamiseks ilma blokeerimiseta, mis parandab rakenduse jõudlust ja reageerimisvõimet.

Näide WhenAll kasutamisest:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Kõik ülesanded on lõpetatud");

Näide WaitAll kasutamisest:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Kõik ülesanded on lõpetatud");

Peamine erinevus on see, et WaitAll blokeerib voolu, samas kui WhenAll võimaldab asünkroonset ootamist ilma blokeerimiseta.