Benmchmarking 2

[C#] Kann Thread nicht in Suspend() schicken

CFI

Lt. Commander
Registriert
Mai 2003
Beiträge
1.400
Erstmal hab ich folgenden Code:
Code:
private void radioButtonEV_CheckedChanged(object sender, System.EventArgs e)
		{
			this.Reset();
			ev = new Thread(new ThreadStart(Einschaltverzögerung));
			if(radio != "EV")
			{
				az.Suspend();
				ev.Start();
			}
		}

Mir bricht nun das Programm bei dem Suspend() mit folgendem Fehler ab:

Thread konnte nicht gestoppt werden, da er noch nicht gestartet wurde.

In der Dekleration von Suspend heißt es aber, das es der Funktion nichts macht, wenn der Thread nicht läuft.
Was ist jetzt da falsch?

mfg
Capt.Iglo
 
Hallo.

Ein Thread kann in die folgenden Zustände versetzt werden:

NEU, BEREIT, BLOCKIERT, BEENDED

Wenn du einen neuen Thread erstellst, dann wird dieser zunächst in den Zustand NEU versetzt. Hier kann er nun gestartet werden (dabei wird er in den Zustand BEREIT versetzt) oder gleich wieder BEENDED werden.

Läuft ein Thread kann der Zustand BEREIT und BLOCKIERT sein. Mit suspend() versetzt du den Thread in den Zustand BLOCKIERT. Das geht (per Definition) nur wenn er sich im Zustand BEREIT befindet. Rufst du suspend() auf, obwohl der Thread bereits BLOCKIERT ist, dann ändert sich gar nichst. Deshalb steht das so in der Hilfe.

Hoffe, das ganze wird nun klarer.
Grüße,
Herbert
 
Zurück
Oben