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

原创 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

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

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

多线程情况下,主线程先退出,子线程会被强制退出吗

1、进程中线程之间的关系 线程不像进程,一个进程中的线程之间是没有父子之分的,都是平级关系。即线程都是一样的, 退出了一个不会影响另外一个。 但是所谓的"主线程"main,其入口代码是类似这样的方...
  • fivedoumi
  • fivedoumi
  • 2016年07月08日 21:37
  • 10435

主线程退出后,子线程会不会退出

额,好吧,这是个标题党,其实所有的线程都是平级的,根本不存在主线程和子线程。下文所述为了方便,将在main函数中的线程看做主线程,其它线程看成子线程,特此说明。先考虑以下代码:          ...
  • hyp1977
  • hyp1977
  • 2016年05月26日 11:34
  • 2392

Junit单元测试主线程退出,子线程也会退出

我们在使用junit做单元测试的时候,当使用多线程的时候,需注意当主线程退出,子线程也会退出。下面我们看一下这个例子。 [java] view plain copy ...
  • Yan456jie
  • Yan456jie
  • 2016年12月30日 10:20
  • 908

Linux线程编程 - 线程退出与等待

线程退出 新创建的线程从执行用户定义的函数处开始执行,直到出现以下情况时退出: 调用pthread_exit函数退出。调用pthread_cancel函数取消该线程。创建线程的进程退出或者整个函...
  • ygl840455828ygl
  • ygl840455828ygl
  • 2016年08月26日 14:42
  • 2155

MFC 用户界面线程:界面线程的退出 窗口关闭的流程

用户界面线程:界面线程的退出 窗口关闭的流程   疯狂代码  http://www.CrazyCoder.cn/        ĵ:http:/www.CrazyCoder.cn/DotNet/A...
  • lhl1158612009
  • lhl1158612009
  • 2014年06月18日 09:16
  • 2270

python程序退出策略

python程序退出策略: 其实跟java的jvm退出策略一致,只有在没有用户线程/进程,只有后台线程或进程的时候,才会退出,注意,主线程默认应该是用户线程 在主线程中新建子线程或者子进程...
  • u011734144
  • u011734144
  • 2017年02月22日 12:10
  • 988

UNIX环境高级编程——主线程与子线程的退出关系

我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。...
  • ctthunagchneg
  • ctthunagchneg
  • 2013年07月16日 11:53
  • 1303

【Linux学习】pthread_create主线程与创建的新线程之间退出关系

【Linux学习】pthread_create主线程与创建的新线程之间退出关系
  • gyy823
  • gyy823
  • 2016年12月05日 10:50
  • 553

关闭程序后,子线程未正确退出引出的内存泄露问题

内存泄露信息如下:    f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {239} normal block ...
  • u013472838
  • u013472838
  • 2015年06月16日 16:47
  • 758
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:主窗口退出时等待工作线程退出
举报原因:
原因补充:

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