我在Winforms应用程序中收到了大量这样的消息,尽管我从未显式创建过任何线程。为什么会发生这种情况?我四处寻找解释,但很难用语言表达这样的询问。
我使用的是Visual Studios 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).
发布于 2014-03-14 11:24:08
来自MSDN文档:
备注
此函数立即返回。如果指定的线程未终止且函数执行成功,则返回的状态为STILL_ACTIVE。如果线程已终止且函数成功,则返回的状态为下列值之一:在ExitThread或TerminateThread函数中指定的退出值。线程函数的返回值。线程进程的退出值。重要提示: GetExitCodeThread函数仅在线程终止后才返回由应用程序定义的有效错误代码。因此,应用程序不应使用STILL_ACTIVE (259)作为错误代码。如果线程返回STILL_ACTIVE (259)作为错误代码,则测试此值的应用程序可能会将其解释为线程仍在运行,并在线程终止后继续测试线程的完成情况,这可能会使应用程序陷入无限循环。
所以基本上它仍然时不时地检查当前的线程。
这似乎是一个bug:
https://stackoverflow.com/questions/22395396
复制相似问题