RT
在程序中用AfxBenginThread()函数来开始一个线程,如何用AfxEndThread()函数来结束一个线程?

解决方案 »

  1.   

    最好让线程自己return返回比较安全一些
      

  2.   

    这样的问题问的人太多了!!
    AfxEndThread()要在线程控制函数内部调用。
    个人认为无需调用这个函数,return最好了。
      

  3.   

    无论你是怎样创建的线程
    终止他的方法只有四种线程函数返回(这是最安全的,但看来不是你需要的)
    线程通过调用ExitThread函数“杀死”自己(要避免使用这种方法)。
    同一个进程或另一个进程中的线程调用TerminateThread函数(要避免使用这种方法,不过应该是你需要的)
    包含线程的进程终止运行(这种方法避免使用)
      

  4.   

    可能我问题没有问明白:我要求是是在主线程中终止掉工作线程。而不是上面所说的,至于return,这个我也懂。
      

  5.   

    return就是让线程自己运行结束返回,强制结束线程用AfxEndThread,建议不要用TerminateThread
      

  6.   

    小弟明白了兔子部长的意思了。
    就是想问一下AfxEndThread()这个函数该怎么用呢?
      

  7.   

    用GetExitCodeThread得到错误码
    再调用AfxEndThread(UINT nExitCode,
      BOOL bDelete = TRUE);
      

  8.   

    出于安全考虑,让线程自已结束。就是return
      

  9.   

    return 并非最好的
    最好是在return前面调用AfxEndThread()
    如果有WaitForSingleObject在等待这个线程的句柄,直接用return的话,等待函数有可能永远都不返回,用了AfxEndThread就不会出现这个问题
      

  10.   

    对于MFC线程来说,你调不调用AfxEndThread(),MFC都会调用它。我看过好多遍源码了!就是_AfxThreadEntry()这个函数。你说“如果有WaitForSingleObject在等待这个线程的句柄,直接用return的话,等待函数有可能永远都不返回,用了AfxEndThread就不会出现这个问题”,其原因不在于是否调用AfxEndThread(),而在于m_bAutoDelete的值
      

  11.   

    那这个m_bAutoDelete值要在那里设置啊~怎样设置才能正常退出线程呢!!!我现在就出现这样的了,线程退出的时候进入_AfxThreadEntry的AfxEndThread就挂在那里了。我直接是用return退出线程的的。。
      

  12.   

    回复18楼:
    将线程指针的m_bAutoDelete赋值为FALSE 即可