afxbeginthread时,对这个方法蛮感兴趣的,创建线程很方便,但是我注意了下,该函数返回的不是创建线程的句柄,而是cwndthread的指针对象,而我想用WaitForMultipleObjects等待线程返回,该怎么办呢,cwndthread里有一个m_hThread对象,是创建线程的句柄.我以为这样就可以了,但是在实际写代码中却出现了很大的问题,WaitForMultipleObjects不起作用,我很郁闷,看了下cwndthread的结构以及实现代码,才恍然大悟,原来,用afxbeginthread创建的线程在结束时,会自动释放对象,关闭句柄,清理内存,这一切都是在cwndthread的析构函数里进行,不需要外界的干预,看了下说明
设置CWinThread成员变量m_bAutoDelete为FALSE,这样当线程中止时线程对象不会被撤销,因此仍然可以获得线程句柄。
注意:因为线程对象在线程中止时不能自动撤销,所以必须由用户进行撤销。
if (m_pThread1 != NULL)
{
delete m_pThread1;
m_pThread1 = NULL;
}