Ich erstelle einen neuen Thread und starte ihn aus einem Hauptthread.
%Vor% Nach 5 Sekunden wird dieser Thread beendet und sein ThreadState ist gestoppt. Ich möchte es erneut starten, wenn der Benutzer auf die Schaltfläche klickt, aber ich bekomme eine ThreadStateException (Thread is running or terminated; it cannot restart)
:
Bitte helfen Sie mir, einen gestoppten Thread neu zu starten. Danke.
Ich weiß, dass diese Frage ein bisschen alt ist, aber ich dachte, ich würde eine Antwort posten, falls andere hierher kommen.
Für diesen Beispielcode sollte er wie folgt aussehen:
%Vor% Dies würde eine neue Instanz des Threads erstellen und starten. Der ThreadStateException
-Fehler liegt daran, dass Sie einen Thread, der sich in einem angehaltenen Zustand befindet, einfach nicht neu starten können. m_MyThread.Start()
ist nur für Threads im Status Unstarted
gültig. In solchen Fällen müssen Sie eine neue Thread-Instanz erstellen und Start()
für die neue Instanz aufrufen.
Verwenden Sie ManualResetEvent
und warten Sie statt Thread.Sleep
auf das Ereignis mit einem Timeout.
Dann kann jeder andere Thread das Ereignis aktivieren und den schlafenden Thread sofort fortsetzen.
Sobald ein Thread beendet wurde, kann er nicht mehr ausgeführt werden. Also lass es nicht austreten. Setze es stattdessen in den Schlafmodus und warte auf ein Ereignis.
Tags und Links .net c# multithreading winforms