为什么我看到多个"线程0x22c8已退出代码259 (0x103).消息

本文关键字:代码 退出 消息 0x103 0x22c8 线程 我看 quot 为什么 | 更新日期: 2023-09-27 17:50:06

我在Winforms应用程序中得到了大量这样的消息,尽管我从未显式地创建任何线程。为什么会发生这种情况?我四处寻找解释,但这样的询价很难用语言来表达。

我正在使用Visual studio 2013,这是我关心的调试输出:

The thread 0x23a4 has exited with code 259 (0x103).
The thread 0x2884 has exited with code 259 (0x103).
The thread 0x27ec has exited with code 259 (0x103).
The thread 0x1978 has exited with code 259 (0x103).
The thread 0x1534 has exited with code 259 (0x103).
The thread 0x1ad8 has exited with code 259 (0x103).
The thread 0x2938 has exited with code 259 (0x103).
The thread 0x22c8 has exited with code 259 (0x103).

为什么我看到多个"线程0x22c8已退出代码259 (0x103).消息

来自MSDN文档:

的评论

这个函数立即返回。如果指定的线程没有终止,函数成功,返回状态为STILL_ACTIVE。如果线程终止并且函数成功,返回的状态为以下值之一:退出值在ExitThread或TerminateThread函数中指定。返回值从线程函数。线程的退出值的过程。GetExitCodeThread函数返回一个有效的仅在线程之后由应用程序定义的错误代码终止。因此,应用程序不应该使用STILL_ACTIVE(259)作为错误代码。如果一个线程返回STILL_ACTIVE(259)作为错误代码,测试此值的应用程序可以解释它表示线程仍在运行,并继续测试完成线程后,线程已经终止,这可以让应用程序进入无限循环。

所以基本上它仍然会时不时地检查当前线程

这似乎是一个bug:

http://connect.microsoft.com/VisualStudio/feedback/details/812144/vs2013-reports-incorrect-thread-exit-code