王朝网络
分享
 
 
 

如何暂停主线程直到第二个线程的终止?

王朝vc·作者佚名  2006-01-09
宽屏版  字体: |||超大  

如何暂停主线程直到第二个线程的终止?

http://www.codeproject.com/threads/waitthreadmsi.asp#xx441032xx

By Ybbozman

本文题目意思是:主线程要继续执行,必须先等待另一个线程的终止。如何等待另一个线程的终止,正是下文要讲述的。

简介Introduction

几周前,我需要制作一个对话框将它作为MSI安装程序的一部分,为此所写的代码必须是作为一个Regular(规则)DLL发布。这个对话框是否可见,完全依赖于安装完成的结果,该功能用另一个线程完成,安装完成后这个线程被终止,并最终显示这个对话框。

我从Microsoft那里寻求一些帮助,找到了正确解决方案:

解决

你必须写两个函数,第一个void CMyTestDialog::PeekMessageLoop() 将从消息队列中获取消息:

void CMyTestDialog::PeekMessageLoop()

{

MSG msg;

while (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

第二个, void CMyTestDialog::WaitForThreadToTerminate(HANDLE hThread) 将指示哪个线程需要等待并作进一步处理:

void CMyTestDialog::WaitForThreadToTerminate(HANDLE hThread)

{

DWORD dwRet;

do

{

dwRet = ::MsgWaitForMultipleObjects(1, &hThread, FALSE,

INFINITE, QS_ALLINPUT);

if (dwRet != WAIT_OBJECT_0)

{

PeekMessageLoop();

}

} while ((dwRet != WAIT_OBJECT_0) && (dwRet != WAIT_FAILED));

}

示例代码

假设对话框上有一个按钮,当点击按钮时,开始启动第二个线程,等到第二个线程完成后,我们再往下继续主线程:

void CMyTestDialog::OnButton1()

{

m_pUpdateThread = AfxBeginThread(UpdateDeviceContent,

(LPVOID)this/*, THREAD_PRIORITY_BELOW_NORMAL*/);

if (m_pUpdateThread)

{

WaitForThreadToTerminate(m_pUpdateThread->m_hThread);

}

//Do whatever you want after the action is finished

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有