Back to questions
Aston
Junior — Middle
73
Чем отличается использование методов WaitAll и WhenAll в асинхронном программировании?
Companies where asked
Answer from AI
sobes.tech 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 позволяет асинхронно ждать завершения без блокировки.