Sobes.tech
Junior — Middle

Como implementar a espera pela conclusão de todas as tarefas de um conjunto de tarefas?

sobes.tech IA

Resposta da IA

Em C#, para esperar que todas as tarefas de um conjunto terminem, pode usar o método Task.WhenAll. Este método aceita um array ou coleção de tarefas e devolve uma tarefa que é concluída quando todas as tarefas passadas como argumento terminam.

Exemplo:

Task[] tasks = new Task[]
{
    Task.Run(() => DoWork(1)),
    Task.Run(() => DoWork(2)),
    Task.Run(() => DoWork(3))
};

await Task.WhenAll(tasks);

void DoWork(int id)
{
    // algum trabalho
    Console.WriteLine($"Tarefa {id} concluída");
}

Se não estiver a usar async/await, pode chamar Task.WaitAll(tasks), que bloqueia o thread atual até que todas as tarefas terminem.