将线程m_bAutoDelete设为TRUE,就不需要显示终止它,否则必须显示终止,不然会使进程无法完全结束,现象是:程序已关闭,但用ctrl+alt+del会看到进程仍在内存中,可以硬杀掉。

解决方案 »

  1.   

    谢谢你 ad
    但是我没用MFC, 而是用api创建的线程
      

  2.   

    显式终止就是在代码中调用了 TerminateThread, ExitThread之类的函数来
    明确的杀掉thread.
      

  3.   

    greentape:
      其实用m_bAutoDelete设为TRUE实现隐式终止线程是一个骗局,进程结束时只不过是根据这个变量决定是否调用有关的API函数。如果你直接用API函数编程,那就只有显示终止了,就是说不存在隐式终止法!
      

  4.   

    主线程退出时将隐式地调用ExitProcess,这将导致该进程的所有线程终止,而不把线程的终止通知DLL,且线程中try-finally,try-except结构的finally和except莫奎都不被执行
    如果主线程退出时显式地调用ExitThread,将不终止其他线程,但其他线程中必须有一个显式地调用ExitProcess,否则即使所有线程都结束了系统也不认为该进程已结束
    因此,最好在主线程退出时通知其他线程,待其他线程结束后再返回