1.概述:
形如:CWinThread* pThread = AfxBeginThread(...);的语句。
在通常情况下,CWinThread的m_bAutoDelete成员变量被设置为True,
也就是说,当这个线程结束后CWinThread对象将被自动销毁,此时
pThread指针指向非法地址。
2.现在的情况是:
我启动了无数个(随着程序的运行时间增加而增加)这样的线程,并且
记录下了每一个线程的pThread(AfxBeginThread的返回值)。但是随
着程序运行,实际上有大部分CWinThread对象已经被自动销毁了。
现在我想在程序终止运行之前检查是否是每一个线程都已经结束;
如果结束了,则不用管它;如果还在运行中,则WaitForSingleObject(...)。
3.问题:
在只知道pThread的情况下,如何判断一个线程是否已经结束?
4.注意:
a).在所有的指向CWinThread的指针中,有大部分是非法指针(因为对象已经在线程结束时被自动销毁)。
b).我不想去手动管理每一个线程。
形如:CWinThread* pThread = AfxBeginThread(...);的语句。
在通常情况下,CWinThread的m_bAutoDelete成员变量被设置为True,
也就是说,当这个线程结束后CWinThread对象将被自动销毁,此时
pThread指针指向非法地址。
2.现在的情况是:
我启动了无数个(随着程序的运行时间增加而增加)这样的线程,并且
记录下了每一个线程的pThread(AfxBeginThread的返回值)。但是随
着程序运行,实际上有大部分CWinThread对象已经被自动销毁了。
现在我想在程序终止运行之前检查是否是每一个线程都已经结束;
如果结束了,则不用管它;如果还在运行中,则WaitForSingleObject(...)。
3.问题:
在只知道pThread的情况下,如何判断一个线程是否已经结束?
4.注意:
a).在所有的指向CWinThread的指针中,有大部分是非法指针(因为对象已经在线程结束时被自动销毁)。
b).我不想去手动管理每一个线程。
解决方案 »
- 关于DLL调用
- 在对话框的一个Static中画图
- 如何让程序崩掉时产生dump文件?
- 再开一贴, 请负责的老大归还我辛苦获得的1000分的技术总分!!!
- 请问操作系统如何通过文件名和文件路径找到该文件所在的物理地址?
- COM客户端读取EXCEL某个SHEET的过程?在线等。谢谢!
- 最近在 Yuv色彩空间遇上了个麻烦问题,请大家帮我看看......能解决一定加分
- 关于CStatic的问题(Waitting online)
- 新问题:如何控制自己程序所调用的其它的动态联接库的运行速度?
- vs.net 中怎么没有 visual InterDev 呀? 它被什么代替了?
- _variant_t如何转换到CString
- 函数的位置问题
if(bRet)
{
if(pThread->m_hThread != NULL)
{
//还没有结束
}
}
{}
{
if (dwCode == STILL_ACTIVE)
{
// Thread is still active,
WaitForSingleObject(...);
}
}