0

我用AfxBeginThread. 我尝试使用 AfxExitThread 退出线程并返回一个值。这两种方法都应该是退出线程的有效方式。

然而,当我打电话给GetExitCodeThreadSTILL_ACTIVE几个小时后。使用时也(WaitForSingleObject(ahtRespondThreads[i], 0) == WAIT_OBJECT_0)显示线程对象仍然有效。

您应该如何判断线程是否真正退出?是的,我知道我可以在函数退出之前设置一些变量,但我认为我应该能够查询线程句柄以知道它已经退出或者不再是有效线程。

4

2 回答 2

3

GetExitCodeThread()不要撒谎,WaitForSingleObject()所以如果两者都说线程仍然处于活动状态,那么线程确实仍然处于活动状态并且尚未退出其控制功能。检查您的函数中的错误,以确保它确实在您期望的时候退出。

于 2012-09-19T22:24:08.050 回答
0

这两种方法都应该有效,我建议检查您的代码是否有任何您可能遗漏的错误,我在这里遇到了另一篇文章,它可能可以帮助您。

注意事项:

我所知道的结束线程的最佳方法是确保线程不会无限期地休眠。当它完成它的任务时让它检查一个变量。这将告诉它是否应该退出。

IE

  1. 设置标志
  2. 如果睡着了唤醒线程
  3. 检查工作是否完成
  4. 清理资源
  5. 出口
于 2012-09-19T22:28:04.907 回答