我使用AfxBeginThread
创建新主题。我已经尝试使用AfxExitThread退出线程并返回一个值。这两个都应该是退出线程的有效方法。
然而,在拨打GetExitCodeThread
电话时,即使在几个小时后我也会STILL_ACTIVE
。此外,使用(WaitForSingleObject(ahtRespondThreads[i], 0) == WAIT_OBJECT_0)
时,表明线程对象仍然有效。
你怎么知道线程是否真的退出了?是的我知道我可以在函数退出之前设置一些变量,但我认为我应该能够查询线程句柄,知道它已经退出或者不再是一个有效的线程。
答案 0 :(得分:3)
GetExitCodeThread()
和WaitForSingleObject()
不说谎,所以如果两个人都说线程仍处于活动状态,那么线程仍然处于活动状态,并且尚未退出其控制功能。检查函数中的错误,确保它在您期望它时真正存在。
答案 1 :(得分:0)
这两种方法都应该正常工作,我建议您检查一下您可能错过的任何错误的代码,我还会遇到另一篇文章here,它可能会帮助您。
注意事项:
我知道结束线程的最佳方法是确保线程无法无限期地休眠。当它完成任务后,它会检查一个变量。这将告诉它是否应该退出。
即