Paar vorneweg:
Sie nicht die Aufgabe Konstruktor verwenden. Verwenden Sie Task.Run() siehe http://blogs.msdn.com/b/pfxteam/archive/2010/06/13/10024153.aspx
Aber in Ihrem Fall bin ich nicht einmal sicher, dass Sie überhaupt Aufgaben verwenden sollten. Für Schleifen gibt es PLINQ.
dieses Stück Code in einer
Schleife
list1.ForEach(t => t.Start());
list1.ForEach(t => t.Wait());
im Grunde ist es eine Aufgabe starten macht laufen, und dann darauf warten, bevor die nächste Schleife beginnt.
Ich empfehle die Verwendung von Parallel.ForAll(), wenn Sie mehrere CPU gebundene Operationen benötigen, um in der Schleife abzuschließen. Wenn es IO-gebunden ist, verwenden Sie async/erwarten Sie
Dann versuchen Sie, die Aufgaben abzubrechen, nachdem Sie darauf gewartet haben, dass sie abgeschlossen sind. Das macht keinen Sinn oder ich verstehe nicht gut genug, was du erreichen willst.
Lassen Sie uns nun über das Abbrechen der Arbeit sprechen. Sie benötigen etwas in der Art:
var cts = new CancellationTokenSource();
var ct = cts.Token;
Stellen Sie die CancellationToken ct den Aufgaben in list1. Rufen Sie dann cts.Cancel() auf, um alle Tasks abzubrechen, denen das Token zugewiesen wurde. Zum Beispiel Task.Run(asyncWork, ct)
wo asyncWork die Aktion ist, die Sie ausführen möchten.
In der Aktion asyncWork prüfen Löschungs ct.ThrowIfCancellationRequested();
Siehe https://blogs.msdn.microsoft.com/andrewarnottms/2014/03/19/recommended-patterns-for-cancellationtoken/
Sie müssen mit mehr über die Aufgaben, die Sie in list1 für eine bessere Beratung setzen bereitzustellen.
Bitte erläutern Sie ein bisschen mehr. Ich kann deine Frage nicht verstehen. – NineBerry
Ich muss diese Schleife realisieren, aber nach einer Ausführung bekomme ich Fehler "Fehler 'System.Threading.Tasks.Task' enthält keine Definition für 'IsCancellationRequested' und keine Erweiterungsmethode 'IsCancellationRequested' akzeptiert ein erstes Argument von type 'System.Threading.Tasks.Task' könnte gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?) " – Quicki