主窗口退出时等待工作线程退出

原创 2007年10月11日 11:17:00
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, 00, 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

Qt登录窗口的退出逻辑

初学Qt编程,程序有一个主窗口,在出窗口显示前有一个登陆窗口,登陆成功后显示主窗口,登陆失败退出程序,根据以往的编程经验,我使用了下面的实现方法:main.cppint main(int argc, ...
  • auragreen
  • auragreen
  • 2011-03-08 11:06:00
  • 3915

wxpython 无法退出

http://blog.csdn.net/xugangjava/article/details/8294716 ShowModal的原理 在主event loop中插入一个循环 来拦截 主...
  • xugangjava
  • xugangjava
  • 2012-12-14 12:44:05
  • 2249

Java中实现用户点击关闭窗口按钮后提示用户,选择“是”后退到父窗口,选择“否”留在原窗口

请看下面的代码:package ui; import java.awt.Color; public class AddDataView extends JFrame implements Acti...
  • Mr_Pang
  • Mr_Pang
  • 2015-08-06 15:14:55
  • 749

Activity打开退出动画:从底部向上打开,退出时从上至下退出,避免Activity退出时屏幕短暂黑屏

第一步:创建进入动画xml文件:activity_tab_pay_open                 android:duration="300"      ...
  • cgtcsdn
  • cgtcsdn
  • 2015-12-18 13:05:49
  • 1670

关于谷歌Chrome浏览器设置退出时自动清除历史记录等

目前的Chrome不支持退出时自动清除历史(就像默认安装在C盘一样…),从设置->高级设置->隐私设置->内容设置选择cookie中的仅将数据保留到您退出浏览器为止是无法清除历史记录的,而保留cook...
  • hailstorm17
  • hailstorm17
  • 2017-11-16 19:33:13
  • 471

C#退出时弹对话框确认退出

private void Form1_FormClosing(object sender, FormClosingEventArgs q)         {             Dialog...
  • u013698486
  • u013698486
  • 2014-02-26 16:24:44
  • 451

Android按返回键退出应用时弹出对话框

在Android中,默认情况下按返回键就是退出应用;而要实现按返回键退出应用时弹出对话框就是在onKeyDown事件中添加监听,根据对话框中的选项实现退出与否。 效果图如下: @Overr...
  • renwudao24
  • renwudao24
  • 2015-03-22 15:11:30
  • 2678

实现小功能:最后一个fragment,按返回键,弹出退出提示框

在FragmentActivity重写onKeyDown方法: @Override public boolean onKeyDown(int keyCode, KeyEvent event) ...
  • zi413293813
  • zi413293813
  • 2014-01-15 21:56:52
  • 2264

多线程中的确保子线程退出之后 主线程退出

 Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处理呢?下面是我个人平时在...
  • qingyang1014
  • qingyang1014
  • 2014-08-13 13:14:53
  • 1864

mfc程序退出时删除托盘图标

在退出函数中加入    nid.hWnd = this-> m_hWnd;    nid.uID=IDR_MAINFRAME;     Shell_NotifyIcon(NIM_DELETE,&...
  • sunnyli3166
  • sunnyli3166
  • 2015-03-22 11:12:46
  • 447
收藏助手
不良信息举报
您举报文章:主窗口退出时等待工作线程退出
举报原因:
原因补充:

(最多只允许输入30个字)