Junior — Middle
Каква е разликата между използването на методите WaitAll и WhenAll в асинхронното програмиране?
sobes.tech AI
Отговор от AI
Методите WaitAll и WhenAll в C# се използват за изчакване на завършването на няколко задачи, но имат важни разлики:
-
WaitAll — това е синхронен метод от класа
Task, който блокира текущия поток, докато всички предадени задачи не приключат. Той не връща резултат и не поддържа асинхронно изчакване. -
WhenAll — е асинхронен метод, който връща задача, която се завършва, когато всички предадени задачи са приключили. Позволява използването на
awaitза неблокиращо изчакване, което подобрява производителността и отзивчивостта на приложението.
Пример за използване на WhenAll:
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Всички задачи са завършили");
Използване на WaitAll:
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Всички задачи са завършили");
Основната разлика е, че WaitAll блокира потока, а WhenAll позволява асинхронно изчакване без блокиране.