有个CSThread类
有Start() Stop() SetFun(fun,,,)方法在CMyTest里使用CSThread类
CMyTest::CMyTest()
{
  SetFun(OnDeal,,,);
}CMyTest::CreateEvent()
{
   m_TMap[n] = npot;//给map赋值
   m_thread.Start();
}
CMyTest::OnDeal(long lp)
{
  if(m_TMap为空)
 {
m_thread.Stop();
 }//能否在此关闭线程,因为OnDeal是线程内执行的  else
{
  //...处理m_TMap中数据
}
}

解决方案 »

  1.   

    看情况,如果CSThread里面的Stop只是简单的将running设置为FALSE,那么你的调用时没有问题的。但是如果Stop函数实现很复杂,比如它有WaitForsingleObject之类的调用,那么你的程序就死锁了。一般来说,最好不要这么用。
      

  2.   

    线程函数最好是能让它自己return返回,这就需要你仔细设置线程函数,比如发送消息到线程函数,线程函数接收到消息,return返回等等。
      

  3.   

    都说TerminateThread不好,就像当初的Goto语句一样。只要自己控制得当,时机要把握得好
    随便怎么使用都没有什么问题的。
      

  4.   

    没看懂...
    //....但不知道什么时候执行完;我是想在执行完后就关闭线程.那就执行完就return 呗..
    取队列的时候放个信号量给外面的线程用,或者自己维护个失效时间
    外面的线程等不急就直接Terminate..没看懂,真的没看懂...