afxAfxBeginThread 获取线程函数返回值

来源:互联网 发布:windows安装hadoop2.7 编辑:程序博客网 时间:2024/06/03 04:34
今天用MFC afxAfxBeginThread 创建线程,错误百出
首先 返回值是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;//手动释放对象

希望对碰到同样问题的新手战友们有帮助
                                             
0 0
原创粉丝点击