Sobes.tech
Junior — Middle

Aký je rozdiel medzi používaním metód WaitAll a WhenAll v asynchrónnom programovaní?

sobes.tech AI

Odpoveď od AI

Metódy WaitAll a WhenAll v C# sa používajú na čakanie na dokončenie viacerých úloh, ale majú dôležité rozdiely:

  • WaitAll — je synchronná metóda triedy Task, ktorá blokuje aktuálny vlákno, kým všetky zadané úlohy nedokončia. Nevracia žiadny výsledok a nepodporuje asynchrónne čakanie.

  • WhenAll — je asynchrónna metóda, ktorá vracia úlohu, ktorá sa dokončí, keď sú všetky zadané úlohy ukončené. Umožňuje použiť await na čakanie bez blokovania, čo zlepšuje výkon a odozvu aplikácie.

Príklad použitia WhenAll:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Všetky úlohy sú dokončené");

Použitie WaitAll:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Všetky úlohy sú dokončené");

Hlavný rozdiel je, že WaitAll blokuje vlákno, zatiaľ čo WhenAll umožňuje asynchrónne čakanie bez blokovania.