Ich versuche jedes Mal, wenn Task.Factory.StartNew
aufgerufen wird, einen neuen Thread zu erstellen. Die Frage ist, wie man den folgenden Code ausführt, ohne die Ausnahme auszulösen:
EDIT: der neue Code Wenn Sie die erste for
Anweisung kommentieren, gibt es kein Problem. Aber wenn Sie es haben, WOW, wird die Nachricht "Thread wiederverwendet" in die Konsole geschrieben. Kannst du das erklären, weil ich wirklich verwirrt bin?
Hallo und vielen Dank für die Antworten. Ihr habt alle +1. Alle vorgeschlagenen Lösungen haben für meinen Fall nicht funktioniert. Das Problem ist, dass wenn Sie einen Thread schlafen, es zu einem bestimmten Zeitpunkt wiederverwendet wird. Die Leute oben vorgeschlagen:
Ich mag es nicht, aber es funktioniert. Grundsätzlich blockiere ich den Thread, so dass er nicht wiederverwendet werden kann. Unten sind die Erweiterungsmethoden und ein funktionierendes Beispiel. Nochmals vielen Dank.
%Vor% Wenn Sie beim Starten der Aufgabe TaskCreationOptions.LongRunning
angeben, Dies liefert dem Scheduler einen Hinweis , den der Standardplaner als Indikator zum Erstellen eines neuen Threads für die Aufgabe verwendet.
Es ist nur ein Hinweis - ich bin nicht sicher, ob ich mich darauf verlassen würde ... aber ich habe keine Gegenbeispiele mit dem Standard-Scheduler gesehen.
Starten Sie einfach Threads mit neuem Thread () und dann Start () sie
%Vor%Aufgaben sollen vom Scheduler verwaltet werden. Die ganze Idee von Aufgaben ist, dass die Laufzeit entscheidet, wann ein neuer Thread benötigt wird. Auf der anderen Seite, wenn Sie andere Threads benötigen, ist die Wahrscheinlichkeit, dass etwas anderes im Code falsch ist, wie eine Überabhängigkeit von Thread.Sleep () oder lokalem Thread-Thread.
Wie bereits erwähnt, können Sie Ihren eigenen TaskScheduler erstellen und Aufgaben verwenden, um Threads zu erstellen, aber warum sollten Sie dann mit Tasks beginnen?
Tags und Links c# multithreading