Junior — Middle
Qual é a diferença entre o uso dos métodos WaitAll e WhenAll na programação assíncrona?
sobes.tech IA
Resposta da IA
Os métodos WaitAll e WhenAll em C# são usados para aguardar a conclusão de várias tarefas, mas têm diferenças importantes:
-
WaitAll — é um método síncrono da classe
Task, que bloqueia o thread atual até que todas as tarefas passadas sejam concluídas. Não retorna resultados e não suporta espera assíncrona. -
WhenAll — é um método assíncrono que retorna uma tarefa que se completa quando todas as tarefas passadas são concluídas. Permite usar
awaitpara aguardar sem bloquear, melhorando o desempenho e a capacidade de resposta da aplicação.
Exemplo de uso de WhenAll:
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Todas as tarefas concluídas");
Uso de WaitAll:
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Todas as tarefas concluídas");
A principal diferença é que WaitAll bloqueia o thread, enquanto WhenAll permite aguardar de forma assíncrona sem bloquear.