Sobes.tech
Junior — Middle

Ako implementovať čakanie na dokončenie všetkých úloh zo súboru úloh?

sobes.tech AI

Odpoveď od AI

V jazyku C# môžete na čakanie na dokončenie všetkých úloh zo skupiny použiť metódu Task.WhenAll. Táto metóda prijíma pole alebo kolekciu úloh a vráti úlohu, ktorá sa dokončí, keď sú všetky odovzdané úlohy ukončené.

Príklad:

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

await Task.WhenAll(tasks);

void DoWork(int id)
{
    // nejaká práca
    Console.WriteLine($"Úloha {id} dokončená");
}

Ak nepoužívate async/await, môžete zavolať Task.WaitAll(tasks), čo blokuje aktuálny vlákno, kým všetky úlohy nie sú dokončené.