囧最近基础问题老多的
就是我想关闭一个线程,如下判断:m_Active = false;
if( NULL != m_Thread )
{
   CloseHandle(m_Thread); 
   TerminateThread(m_Thread,0);//这句是后来加上的,想确保再次关闭下线程
}调试发现执行这段代码后,句柄m_Thread的值没有变化求解

解决方案 »

  1.   

    关闭句柄了,就不要强制结束线程TerminateThread(m_Thread,0);
      

  2.   

    你应该判断CloseHandle的返回值
    Return Values
    If the function succeeds, the return value is nonzero.If the function fails, the return value is zero. To get extended error information, call GetLastError. 
      

  3.   

    if( NULL != m_Thread )
    {
       TerminateThread(m_Thread,0);//这句是后来加上的,想确保再次关闭下线程
       CloseHandle(m_Thread); 
       m_nThread = NULL;
    }
    一般都这样使用
      

  4.   

    楼主看看TerminateThread这个函数的文档,是不被建议使用的,因为他是一个强制立即终止线程的暴力函数,如果此时你的线程正在释放资源,或者获得同步时间,很可能导致资源泄漏或者死锁