Sobes.tech
Junior — Middle

Hogyan valósítható meg a várakozás az összes feladat befejezésére egy feladatsorban?

sobes.tech MI

Válasz az MI-től

C#-ban a feladatok halmazának összes feladatának várásához használhatja a Task.WhenAll metódust. Ez elfogad egy tömböt vagy gyűjteményt feladatokból, és egy olyan feladatot ad vissza, amely akkor fejeződik be, amikor az összes megadott feladat befejeződik.

Példa:

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

await Task.WhenAll(tasks);

void DoWork(int id)
{
    // valamilyen munka
    Console.WriteLine($"Feladat {id} befejeződött");
}

Ha nem használ async/await-et, akkor hívhatja a Task.WaitAll(tasks)-t, amely blokkolja a jelenlegi szálat, amíg az összes feladat be nem fejeződik.