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
awaitpara 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.