一尘不染

什么是线程退出代码?

c#

调试时“输出”窗口中的线程退出代码到底是什么?它给我什么信息?它以某种方式有用吗,还是只是一个不应该困扰我的内部东西?

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

是否存在某种可能的退出代码及其含义的列表?


阅读 407

收藏
2020-05-19

共1个答案

一尘不染

显然,在这个问题上似乎没有太多的解释,但是应该使用退出代码来指示线程如何退出,0倾向于表示它安全退出,而其他任何事物都表明它没有退出。不能按预期退出。但是,您可以自己在代码中设置此退出代码,以完全忽略它。

我能找到更多的信息是有用的最接近的链接是这个

从上面的链接引用:

无论退出方法是什么,从进程或线程返回的整数必须是0-255(8位)之间的值。零值表示成功,非零值表示失败。尽管您可以尝试将任何整数值作为退出代码返回,但是只有整数的最低字节作为退出代码的一部分从您的进程或线程中返回。操作系统使用高位字节来传达有关进程的特殊信息。退出代码在批处理/
shell程序中非常有用,批处理/ shell程序根据一个程序的成功或失败有条件地执行其他程序。


GetEXitCodeThread的文档中

重要说明:只有在线程终止后,GetExitCodeThread函数才返回由应用程序定义的有效错误代码。因此,应用程序不应使用STILL_ACTIVE(259)作为错误代码。
如果线程返回STILL_ACTIVE(259)
作为错误代码,则测试该值的应用程序可以将其解释为意味着该线程仍在运行,并在线程终止后继续测试该线程的完成情况,这可能会使应用陷入无限循环。


我对这一切的理解是,如果您在自己的应用程序中
自己的应用程序使用线程,则退出代码并没有多大关系。如果您同时运行两个相互依赖的线程,则可能是例外。如果需要外部源读取此错误代码,则可以将其设置为让其他应用程序知道您的线程状态。

2020-05-19