UINT MyThread(HWND hWnd)
{
     while(true)
     {
         WaitForSingleObject(eventSatrt, INIFINIT);
          Sleep(100);
         if( bExit )
             return 1;
      }
     return 0;}如上函数描述的,eventStart没有触发时,线程MyThread是不是一直堵塞在WaitForSingleObject(eventSatrt, INIFINIT)处?线程会去判断bExit吗?bExit为TRUE时是否退出呢?如果一直堵塞在那里的话,如何让线程退出呢?
接触线程不深,请各位多指教!!

解决方案 »

  1.   

    不会,会一直停在WaitForSingleObject(eventSatrt, INIFINIT);这里,直到event Set
      

  2.   

    可以让第二个参数为100,去掉Sleep(100);
      

  3.   

    用WaitForMultipleObjects
    等待多个事件
    第三个参数设为FALSE
      

  4.   

    用WaitForMultipleObjects
    等待多个事件
    第三个参数设为FALSE
    =======================================
    楼上的这个可行,就是要判断返回值是什么,然后根据返回值来做响应的处理,对不?不会,会一直停在WaitForSingleObject(eventSatrt, INIFINIT);这里,直到event Set
    =============================================================================
    我试了一下,的确是一直停在WaitForSingleObject(eventSatrt, INIFINIT);这里另外,我把程序改成这样了
    UINT MyThread(HWND hWnd)
    {
         while(!bExit)
         {
             WaitForSingleObject(eventSatrt, INIFINIT);
             if ( bExiet )
                 return 0
              ...
              Sleep(100);
              ...
             
            }
         return 0;}
    退出时的处理
    void OnExit()
    {
         bExit = TRUE;
         eventSatrt.SetEvent();
    PostMessage(WM_CLOSE)
        return;
    }
    这样就可以安全的退出了
      

  5.   

    该代码会一直等到eventSatrt 这个句柄被置为未通知状态
    以后的代码才会被执行到。
      

  6.   

    设置超时,把INIFINIT该成100,每一100ms内每由事件通知就返回。
      

  7.   

    多看看MSDN
    用WaitForMultipleObjects就可以搞定多事件等待
    主要是搞清楚WaitForMultipleObjects的返回值代码在我台式机里面,最近两天挂了
    等我修好了帮你找找
      

  8.   

    多看看MSDN
    用WaitForMultipleObjects就可以搞定多事件等待
    主要是搞清楚WaitForMultipleObjects的返回值代码在我台式机里面,最近两天挂了
    等我修好了帮你找找
    ================================谢谢,看了MSDN,就是返回值有待确定