.NET-Threads haben keine Exit-Codes. Diese werden von den nativen Threads unter Windows verwendet, aber native Threads werden nur von verwalteten Threads verwendet und haben keine 1: 1-Entsprechung zu einem angegebenen verwalteten Thread. Derselbe verwaltete Thread kann auf mehreren nativen Threads ausgeführt werden und umgekehrt (obwohl offensichtlich nicht zur selben Zeit). MSDN:
Ein Betriebssystem ThreadId hat keine feste Beziehung zu einem verwalteten Thread, da ein nicht verwalteter Host die Beziehung zwischen verwalteten und nicht verwalteten Threads steuern kann. Insbesondere kann ein ausgeklügelter Host die Fiber-API verwenden, um viele verwaltete Threads für denselben Betriebssystemthread zu planen oder einen verwalteten Thread zwischen verschiedenen Betriebssystemthreads zu verschieben.
Dies gilt natürlich für alle auf den native Thread gebunden Ressourcen - aber die Laufzeit schafft es die verwalten Ressourcen eines Fadens, natürlich; und für nicht verwalteten Code, der zu verwaltetem Code aufruft, wird der Thread derselbe bleiben - andernfalls wäre Interop ziemlich unmöglich.
Wenn Sie Aufgaben zusätzliche Informationen hinzufügen möchten, versuchen Sie es mit einer höheren Abstraktionsebene - z. Task
. Müssen Sie den Status einer Aufgabe nach Abschluss ausgeben? Fügen Sie eine Fortsetzung hinzu. Müssen Sie den Status einer Aufgabe überprüfen, für die Sie eine Referenz haben? Warte darauf oder frage das Task
Objekt ab.
Sie sollten nicht verwenden/verlassen sich auf sie in .net, Gründe/Erklärung [hier] (https://stackoverflow.com/questions/5628908/whats-the-äquivalent-of-exitthreadexitcode-and-getexitcodethread-in -c-scharf). –
Es gibt einen Windows-API-Aufruf ['ExitThread (DWORD)'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682659 (v = vs.85) .aspx), der eine Thread mit dem bereitgestellten Exit-Code. Aber ich bin mir ziemlich sicher, dass es eine sehr schlechte Idee ist, das aus verwalteten Threads aufzurufen, aus den Gründen, die von Manfred –