现在是在对话框启动时启动多个线程:
for(int j=0;j<MAXTHREADS;j++)
{ ThreadInfos[i]=new ThreadInfo();
ThreadInfos[i]->pCTestWin=this;
ThreadInfos[i]->ThreadId=i;
ThreadInfos[i]->m_hEventStop=::CreateEvent(NULL,TRUE,FALSE,NULL);
UpThreads[j]=AfxBeginThread(TestThread,(LPVOID)ThreadInfos[j]);
}
退出按钮:
for(int i=0;i<MAXTHREADS;i++)
{
SetEvent(ThreadInfos[i]->m_hEventStop);//设置停止信号
}
//然后应该是等待各个线程结束,以便进行下一步处理
//该怎么写呢?
线程函数:
UINT TestThread(LPVOID n)
{
ThreadInfo *pInfo=(ThreadInfo *)n;
while(true)
{
if(WaitForSingleObject(pInfo->m_hEventStop, 0)== WAIT_OBJECT_0)break;
//......
}
}

解决方案 »

  1.   

    DWORD res = 0;
    GetExitCodeThread(m_Thread->m_hThread,&res);

    if (res == STILL_ACTIVE) 
    return FALSE;这样子可以得到线程的状态,如果 STILL_ACTIVE,PostMessage(WM_CLOSE)类似的消息。
      

  2.   

    定义 HANDLE UpThreads[MAXTHREADS];//线程句柄组
    启动线程时候
    UpThreads[j]=AfxBeginThread(TestThread,(LPVOID)ThreadInfos[j])->m_hThread;//传句柄//主线程等待
    WaitForMultipleObjects(MAXTHREADS,UpThreads,TRUE,INFINITE); //第二参数用线程句柄组,等线程全部关闭后,就会返回.....
      

  3.   

    谢谢大家!
    jslisong(碧螺春):
    你的代码可以检查各个线程是否结束,但是我怎么一直等到各个线程结束呢?
    seu07201213(【东南】〖少帅〗) :
    使用WaitForMultipleObjects方法我也测试过,但是会让对话框没反应。我查了资料,说了什么消息循环造成的死锁,不知道是不是这个原因?随便问一下,如果设置CWinThread对象的m_bAutoDelete=false,那回头我怎么删除这个对象啊?
      

  4.   

    如果设置CWinThread对象的m_bAutoDelete=false,那回头我怎么删除这个对象啊?
    手动删除呀。
      

  5.   

    使用WaitForMultipleObjects方法我也测试过,但是会让对话框没反应。我查了资料,说了什么消息循环造成的死锁,不知道是不是这个原因?
    -------------------------------------------------
    确保线程中没有阻塞调用,或者与消息相关的调用。如果是后者,使用MsgWaitForMultipleObjects代替WaitForMultipleObjects
      

  6.   

    首先m_bAutoDelete=false;for(int i=0;i<MAXTHREADS;i++)
    {
      if (ThreadInfos[i] != NULL)
      {
        SetEvent(ThreadInfos[i]->m_hEventStop);
        ::WaitForSingleObject(ThreadInfos[i]->m_hThread, INFINITE);
        delete ThreadInfos[i];
        ThreadInfos[i];
      }
    }
      

  7.   

    最后一句应为ThreadInfos[i] = NULL;
    【新人,不知道怎么修改已发帖子,所以只能追加了,有谁知道告诉我一下,谢谢!】
      

  8.   

    http://www.microsoft.com/msj/0797/multithreading.aspx
      

  9.   

    我也发http://www.codeproject.com/cpp/rendevouz.asp