今天用MFC afxAfxBeginThread 创建线程,错误百出
首先 返回值是CWinThread * 我当成Hthread用了
然后用GetExitCodeThread()获取线程返回码老实失败,百度下应该是CWinThread 对象会自动释放句柄资源的缘故,改了下代码,如下
线程函数
UINT BeginBook1(LPVOID lpParam)
{
return 9;
p->m_bAutoDelete = FALSE; //设置不自动释放
p->ResumeThread(); //恢复运行
WaitForSingleObject(p->m_hThread, -1); //等待运行结束
DWORD dwResult = 0;
::GetExitCodeThread( p->m_hThread, &dwResult // 查看返回值
首先 返回值是CWinThread * 我当成Hthread用了
然后用GetExitCodeThread()获取线程返回码老实失败,百度下应该是CWinThread 对象会自动释放句柄资源的缘故,改了下代码,如下
线程函数
UINT BeginBook1(LPVOID lpParam)
{
return 9;
}
调用
CWinThread *p = AfxBeginThread(BeginBook1, 0,THREAD_PRIORITY_ABOVE_NORMAL,0,CREATE_SUSPENDED);//要 启动暂停,要不直接运行完成释放了p->m_bAutoDelete = FALSE; //设置不自动释放
p->ResumeThread(); //恢复运行
WaitForSingleObject(p->m_hThread, -1); //等待运行结束
DWORD dwResult = 0;
::GetExitCodeThread( p->m_hThread, &dwResult // 查看返回值
p->Delete();//不能这样,
delete p;//手动释放对象
希望对碰到同样问题的新手战友们有帮助