Sobes.tech
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 позволява асинхронно изчакване без блокиране.