Hier ist ein Beispielcode zum Starten mehrerer Aufgaben
%Vor% Wenn wir mehrere Aufgaben mit Task.Factory.StartNew()
starten, können wir mit .ContinueWith()
block ermitteln, wann die einzelnen Aufgaben beendet werden. Ich meine ContinueWith Block Feuer für jeden Task Abschluss. Ich möchte nur wissen, ob es einen Mechanismus in der TPL-Bibliothek gibt. Wenn ich 10 Aufgaben mit Task.Factory.StartNew()
starte, wie melde ich mich danach wenn 10 Aufgaben beendet werden. Bitte geben Sie einen Einblick in den Beispielcode.
wenn ich 10 Aufgabe mit Task.Factory.StartNew () beginne, also wie benachrichtige ich, wenn 10 Aufgabe beendet wird
Drei Optionen:
Task.WaitAll
Aufruf, der erst zurückkehrt, wenn alle angegebenen Aufgaben abgeschlossen sind Task.WhenAll
Aufruf, der zurückgibt eine Aufgabe, die abgeschlossen wird, wenn alle angegebenen Aufgaben abgeschlossen sind. (Eingeführt in .NET 4.5.) TaskFactory.ContinueWhenAll
, das eine Fortsetzungsaufgabe hinzufügt, die ausgeführt wird, wenn alle angegebenen Aufgaben abgeschlossen sind. wenn ich 10 Aufgabe mit Task.Factory.StartNew () beginne, also wie benachrichtige ich, wenn 10 Aufgabe beendet wird
Sie können Task.WaitAll verwenden. Dieser Aufruf blockiert den aktuellen Thread, bis alle Aufgaben abgeschlossen sind.
Randnotiz: Sie scheinen Task
, Parallel
und Thread.SpinWait
zu verwenden, was Ihren Code komplex macht. Ich würde ein bisschen Zeit damit verbringen zu analysieren, ob diese Komplexität wirklich notwendig ist.
Tags und Links c# task-parallel-library