Sobes.tech
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 await para 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.