Sobes.tech
Junior — Middle

¿En qué se diferencian el uso de los métodos WaitAll y WhenAll en la programación asíncrona?

sobes.tech AI

Respuesta de la IA

Los métodos WaitAll y WhenAll en C# se utilizan para esperar a que finalicen varias tareas, pero tienen diferencias importantes:

  • WaitAll — es un método sincrónico de la clase Task, que bloquea el hilo actual hasta que todas las tareas pasadas finalicen. No devuelve resultados y no soporta espera asíncrona.

  • WhenAll — es un método asíncrono que devuelve una tarea que se completa cuando todas las tareas pasadas finalizan. Permite usar await para esperar sin bloquear, mejorando el rendimiento y la capacidad de respuesta de la aplicación.

Ejemplo de uso de WhenAll:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Todas las tareas han finalizado");

Uso de WaitAll:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Todas las tareas han finalizado");

La principal diferencia es que WaitAll bloquea el hilo, mientras que WhenAll permite esperar de forma asíncrona sin bloquear.