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ť
awaitna č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.