Wie starte ich einen gestoppten Thread?

8

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) :

%Vor%

Bitte helfen Sie mir, einen gestoppten Thread neu zu starten. Danke.

    
Leo Vo 05.07.2011, 04:37
quelle

5 Antworten

2

Wenn Sie den Thread jedes Mal ohne einen neuen Thread wiederverwenden möchten, können Sie die Implementierung des Thread-Pools in Betracht ziehen.

    
Ivan 05.07.2011, 04:43
quelle
8

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.

    
Daniel Winks 19.12.2011 22:07
quelle
3

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.

    
Ben Voigt 05.07.2011 04:52
quelle
1

Erstellen Sie einfach einen neuen Thread wie bei der ersten Erstellung des Threads. Sie können dies auch in eine Methode hineinziehen, um sich nicht zu wiederholen.

    
icktoofay 05.07.2011 04:38
quelle
0

Um einen Thread neu zu starten, versuchen Sie Folgendes:

%Vor%

Dies funktioniert, wenn der Thread zuvor gestoppt wurde.

    
suffuko 20.03.2017 05:10
quelle

Tags und Links