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.