写了一个继承自CWinThread的线程,里边是一个while(1)循环,除非整个程序退出,否则一直循环。
请问程序退出是,如何终止该线程?
需要用消息吗?
给个例子看看,先谢了!

解决方案 »

  1.   

    自己不退出,在进程结束时它也会把这个线程结束的。
    如果想主动退出,就加个标识,想退出时设置标识,就退出。如:BOOL bExit=TRUE;
    while(bExit)
    {
    ....}//要退出时调用下面的函数
    void otherfun()
    {
    bExit = FALSE;
    }
      

  2.   

    楼上的已经说得很清楚了,补充一下你的线程里面的函数UINT ThreadFunc(LPVOID lp)
    {
         while(1)
         {
    // 你这里是不是有一个等待的语句?sleep 或者WaitForSingleObject之类的函数?
    // 你在这个函数后判断一下是不是成图退出了,这个退出你用一个全局的标识就行了,如果是退出的话就跳出循环,先线程退出
         }
    }
      

  3.   

    线程的退出用1楼的方法就可以了
    线程类的退出发消息::PostThreadMessage(线程指针->m_nThreadID,WM_QUIT,0,0);
      

  4.   

    //自己不退出,在进程结束时它也会把这个线程结束的。 
    好像这样有可能抛出异常。
    //如果想主动退出,就加个标识,想退出时设置标识,就退出。
    这样也可以,不过while循环里边一次循环时间比较长的话,要等待很长时间才能退出。
    谢谢回复!
    不知道还有什么其他的方法吗?
      

  5.   


    线程处理WM_QUIT消息时把资源都释放掉就ok
      

  6.   

    创建一个事件对象
    hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);然后在线程中
    while(true)
    {
     ...
     if((WaitForSingleObject(hEvnet, 0)) == WAIT_OBJECT_0)
     {
       return;
     }
     ...
    }要循环退出就 SetEvent(hEvent);
      

  7.   

    在主线程中控制子线程退出用Event;