什么是线程退出代码?
在debugging时,输出窗口中的线程退出代码究竟是什么? 它给了我什么信息? 这是不是有用的或只是一个内部的东西,不应该打扰我?
The thread 0x552c has exited with code 259 (0x103). The thread 0x4440 has exited with code 0 (0x0).
是否可能有某种可能的退出代码列表及其意义?
实际上似乎对这个问题似乎没有太多的解释,但是退出代码应该被用来指示线程退出, 0
往往意味着它安全地退出,而其他任何东西往往意味着退出没有按预期退出。 但是这个退出代码可以由代码自己设置,以完全忽略这个。
我能find的最有用的信息是这个
从上面的链接引用:
什么是退出的方法,从你的进程或线程返回的整数必须是从0-255(8位)的值。 零值表示成功,而非零值表示失败。 尽pipe您可以尝试返回任何整数值作为退出代码,但是只有整数的最低字节才作为退出代码的一部分从您的进程或线程返回。 操作系统使用更高阶的字节来传递有关进程的特殊信息。 退出代码在批处理/shell程序中非常有用,这些程序根据一个程序的成功或失败条件执行其他程序。
从GetEXitCodeThread的文档
重要GetExitCodeThread函数仅在线程终止后返回应用程序定义的有效错误代码。 因此,应用程序不应该使用STILL_ACTIVE(259)作为错误代码。 如果线程返回STILL_ACTIVE(259)作为错误代码,则testing此值的应用程序可能会将其解释为意味着线程仍在运行,并在线程终止后继续testing线程的完成情况,应用程序进入无限循环。
我对这一切的理解是,如果你在自己的应用程序中使用线程来为自己的应用程序使用退出代码,那么这个代码并不重要。 这是一个例外情况,如果你正在同时运行一些线程,并且相互依赖的话。 如果需要外部源读取此错误代码,则可以将其设置为让其他应用程序知道您的线程的状态。
正如Sayse所提到的,退出代码259 (0x103)
具有特殊含义,在这种情况下正在debugging的进程仍在运行。
我在debuggingWeb服务时看到了很多,因为在执行每个Web服务调用之后线程继续运行(因为它仍在监听进一步的调用)。
发生在我身上的是我的解决scheme中有多个项目。 我打算debugging项目1,但是项目2被设置为默认启动项目。 我解决了这个问题,右键单击该项目并select“设置为启动项目”,然后运行debugging就可以了。
- C#,正则expression式:如何parsing逗号分隔的值,其中一些值可能被引用的string本身包含逗号
- 你可以使用stringvariables实时创buildJavaScript正则expression式吗?