web-dev-qa-db-de.com

Was ist ein Thread-Exit-Code?

Was genau ist ein Thread-Exit-Code beim Debuggen im Ausgabefenster? Welche Informationen gibt es mir? Ist es irgendwie nützlich oder nur ein internes Zeug, das mich nicht stören sollte?

The thread 0x552c has exited with code 259 (0x103).
The thread 0x4440 has exited with code 0 (0x0).

Gibt es möglicherweise eine Liste möglicher Exit-Codes mit ihrer Bedeutung?

110
Ondrej Janacek

Anscheinend gibt es anscheinend nicht viele Erklärungen zu diesem Thema, aber die Exit-Codes sollen dazu verwendet werden, einen Hinweis darauf zu geben, wie der Thread beendet wurde. 0 neigt dazu, dass er sicher beendet wurde, während alles andere dies bedeutet nicht wie erwartet beendet. Dann kann dieser Exit-Code von Ihnen selbst eingestellt werden, um dies vollständig zu übersehen.

Der nächstgelegene Link, den ich für weitere Informationen als nützlich erachten könnte, ist this

Zitat von oben link:

Unabhängig von der Methode zum Beenden müssen Sie für die Ganzzahl, die Sie von Ihrem Prozess oder Thread zurückgeben, Werte zwischen 0 und 255 (8 Bit) angeben. Ein Nullwert zeigt Erfolg an, während ein Nicht-Nullwert Fehler anzeigt. Sie können zwar versuchen, einen beliebigen Integer-Wert als Exit-Code zurückzugeben, aber nur das niedrigste Byte der Integer-Zahl wird von Ihrem Prozess oder Thread als Teil eines Exit-Codes zurückgegeben. Die höherwertigen Bytes werden vom Betriebssystem verwendet, um spezielle Informationen über den Prozess zu übermitteln. Der Exit-Code ist sehr nützlich in Batch-/Shell-Programmen, die je nach Erfolg oder Misserfolg eines anderen Programms bedingt andere Programme ausführen.


Aus der Dokumentation für GetEXitCodeThread

Wichtig Die GetExitCodeThread-Funktion gibt einen gültigen Fehlercode erst dann zurück, wenn der Thread beendet wurde. Daher sollte eine Anwendung STILL_ACTIVE (259) nicht als Fehlercode verwenden. Wenn ein Thread STILL_ACTIVE (259) als Fehlercode zurückgibt, könnten Anwendungen, die diesen Wert testen, diesen Wert so interpretieren, dass der Thread noch läuft und weiterhin den Abschluss des Threads testen, nachdem der Thread beendet wurde. was die Anwendung in eine Endlosschleife bringen könnte.


Ich verstehe das alles so, dass der Exit-Code keine große Rolle spielt, wenn Sie Threads in Ihrer eigenen Anwendung for Ihrer eigenen Anwendung verwenden. Die Ausnahme ist möglicherweise, wenn Sie mehrere Threads gleichzeitig ausführen, die voneinander abhängig sind. Wenn eine externe Quelle diesen Fehlercode lesen muss, können Sie ihn so einstellen, dass andere Anwendungen den Status Ihres Threads erkennen.

97
Sayse

Wie Sayse erwähnt hat, hat der Exit-Code 259 (0x103) eine besondere Bedeutung. In diesem Fall wird der zu debuggende Prozess noch ausgeführt.

Ich habe dies beim Debuggen von Webdiensten viel gesehen, da der Thread nach jedem Webdienstaufruf weiterhin ausgeführt wird (da er immer noch auf weitere Aufrufe wartet).

53

was mir passiert ist, ist, dass ich mehrere Projekte in meiner Lösung habe. Ich wollte Projekt 1 debuggen, das Projekt 2 wurde jedoch als Standard-Startprojekt festgelegt. Ich habe das Problem behoben, indem Sie mit der rechten Maustaste auf das Projekt klicken und "Als Startprojekt festlegen" auswählen. Anschließend ist das Debuggen in Ordnung. 

0
Feng Zhang