为什么我看到多个“线程0x22c8已退出,代码为259(0x103)”的消息?

61

尽管我从未显式创建任何线程,但在我的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).

可能是重复的问题:什么是线程退出代码 - Kristian Williams
1个回答

57

来自MSDN文档:

备注

此函数立即返回。 如果指定的线程尚未终止并且函数成功,则返回的状态为 STILL_ACTIVE。 如果线程已终止并且函数成功,则返回的状态是以下值之一:ExitThread或TerminateThread函数中指定的退出值。 线程函数的返回值。 线程进程的退出值。重要提示:GetExitCodeThread函数仅在线程终止后才返回应用程序定义的有效错误代码。 因此,应用程序不应将STILL_ACTIVE(259)用作错误代码。 如果线程将STILL_ACTIVE(259)作为错误代码返回,则测试此值的应用程序可能将其解释为线程仍在运行并继续在线程终止后测试线程的完成,这可能会使应用程序进入无限循环。

因此,基本上它仍然会不时地检查当前线程。

看起来这是一个错误:

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


29
很容易关闭这些消息(我在使用VS 2013)。只需在输出窗口中右键单击并取消选中“Thread Exit Messages”框。对我来说,我还需要取消选中“Module Load Messages”以清除输出内容。 - Travis Heeter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接