主窗口退出时等待工作线程退出
2007-10-11 11:17
295 查看
CMyView::OnDestroy()
...{
m_pMyThread->PostThreadMessage (WM_QUIT,0,0);//a work thread with UI pump
DWORD ret;
bool quit=false;
int quitwparam=0;
bool bThreadEnd = false;
do
...{
ret = ::MsgWaitForMultipleObjects(1, &m_hThread, FALSE,
INFINITE, QS_ALLINPUT);
if (ret != WAIT_OBJECT_0)
...{
MSG msg;
while(::PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
...{
//do not feed WM_QUIT into the message pump!
if(WM_QUIT==msg.message)
...{
GetMessage(&msg,0,0,0);//do not feed WM_QUIT into the message pump!
quit=true;
quitwparam=(int)msg.wParam;
}
else
...{
VERIFY(AfxGetApp ()->PumpMessage ());
}
//if(WAIT_OBJECT_0 == WaitForSingleObject(m_hThread, 0))
// {
//bThreadEnd = true;
//break;
// }
}
}
} while ((ret != WAIT_OBJECT_0) && (ret != WAIT_FAILED));
if(quit)
PostQuitMessage(quitwparam);
VERIFY(CloseHandle(m_hThread));
m_hThread=0;
}
Refer to:
First Aid for the Thread-Impaired: Using Multiple Threads with MFC
More First Aid for the Thread Impaired: Cool Ways to Take Advantage of Multithreading
Waiting for a thread to terminate
相关文章推荐
- 用一个工作线程来发送询问命令,等待接收到下位机应答数据后退出。如果两秒下位机未应答,则重发询问命令。重发10次下位机不应答,则认为通信故障,
- windows和linux下等待线程的退出
- 如何在工作线程中创建窗口?
- 如何在工作线程中创建窗口?
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用) .
- 主线程等待一个 无阻塞函数 死循环子线程的安全退出
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用)
- 窗口和线程漫谈之工作线程如何将数据的处理结果显示到窗口
- 对话框中WaitForSingleObject等待线程退出导致程序阻塞的原因及解决
- 更新主窗口控件的内容2:子线程工作时同时更新主线程内的控件内容
- Linux线程编程 - 线程退出与等待
- 以事件通知线程结束,并等待线程安全退出
- 在MFC中从一个线程工作函数中向窗口发送消息以及窗口到窗口消息传送方法
- MFC 用户界面线程:界面线程的退出 窗口关闭的流程
- 线程等待,退出
- 对话框中WaitForSingleObject等待线程退出导致程序阻塞的原因及解决
- Java父线程(或是主线程)等待所有子线程退出
- 工作线程中调用UI线程创建的窗口的UpdateData会导致Assert的问题及解决办法.
- windows游戏开发中一个关于Visual Studio的编译链接成功,输出窗口却显示线程已退出。无法运行项目的问题
- UNIX环境高级编程学习之第十一章线程-线程的创建、退出、等待、取消、分离