AfxBeginThread创建的子线程,如何在主线程中等待子线程执行完毕

kmsch 2015-10-17 04:15:46
AfxBeginThread创建的子线程
CWndThread类有没有函数可以让主线程等待子线程结束再继续执行,类似API函数中的WaitForSingleObject
...全文
1414 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
CuiShuZhuang 2017-04-12
  • 打赏
  • 举报
回复
请问楼主这问题怎么解决的?
牧童吃五谷 2015-10-25
  • 打赏
  • 举报
回复
主线程做个全局的信号量: HANDLE hEvent = ::CreateEvent(...), 主线程建立子线程,并等待hEvent信号 子线程的对应线程函数的最后一条语句前,就是return 0;前面增加SetEvent(hEvent);
赵4老师 2015-10-19
  • 打赏
  • 举报
回复
《Windows核心编程》
marslycan 2015-10-19
  • 打赏
  • 举报
回复
g_eventIsRePlay.ResetEvent();

	DWORD DwRet = 0;
	DWORD dwExitcode;
	MSG msg;

	//等待系统消息分配结束,防止线程阻塞
	while(1)
	{
		DwRet = MsgWaitForMultipleObjects(1, &m_ReplayThread->m_hThread, FALSE, INFINITE, QS_ALLINPUT);

		switch(DwRet)
		{
		case  WAIT_OBJECT_0:
			break;

		case WAIT_OBJECT_0 + 1:
			PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
			DispatchMessage(&msg);
			continue;

		default:
			break;
		}

		break;
	}

	//获得线程退出码
	GetExitCodeThread(m_ReplayThread->m_hThread, &dwExitcode);

	//如果线程正常退出,则释放相关线程对象
	if (dwExitcode != STILL_ACTIVE)
	{
		delete m_ReplayThread;
		m_ReplayThread = NULL;
	}
	else
	{
		AfxMessageBox("线程结束异常");
	}
lx624909677 2015-10-18
  • 打赏
  • 举报
回复
既然是要等待子线程完成后主线程再继续走,为什么不把子线程里做的事情放在主线程里呢?
worldy 2015-10-18
  • 打赏
  • 举报
回复
引用 6 楼 greenabc 的回复:
WaitForSingleObject( 子线程句柄)或WaitForMultiObject(子线程句柄)都可以,关键是没有实际意义吧。 主线程等起为什么不干脆让主线程执行这个任务,主线程只要等起如果有界面的应用,界面已经假死了。 做也是死不做肯定死,你来抉择吧!
这个说法不对,主线程结束瞬间,子线程可能正在执行任务,主线程要怎么样才能夺取主线程的控制权并执行子线程遗留的任务?并且,还有可能有n个子线程呢
encoderlee 2015-10-18
  • 打赏
  • 举报
回复
WaitForSingleObject()、CWinThread::m_hThread
greenabc 2015-10-17
  • 打赏
  • 举报
回复
WaitForSingleObject( 子线程句柄)或WaitForMultiObject(子线程句柄)都可以,关键是没有实际意义吧。 主线程等起为什么不干脆让主线程执行这个任务,主线程只要等起如果有界面的应用,界面已经假死了。 做也是死不做肯定死,你来抉择吧!
worldy 2015-10-17
  • 打赏
  • 举报
回复
waitformultiobject(子线程句柄)
oyljerry 2015-10-17
  • 打赏
  • 举报
回复
没有。就用wait API来等待
oyljerry 2015-10-17
  • 打赏
  • 举报
回复
没有。就用wait API来等待
oyljerry 2015-10-17
  • 打赏
  • 举报
回复
没有。就用wait API来等待
FireBurn 2015-10-17
  • 打赏
  • 举报
回复
应该没有,可以使用CWinThread::m_hThread判断

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧