我一子窗口里面,创建一个线程,执行一个大的程序,
但是关闭子窗口时,如果线程还在运行,需要关闭它,
该如何关闭呢?我会用TerminateThread,但是这个不是不安全吗?网上搜了很多,都说自然退出最安全,
可以再需要关闭的时候设置event,
在线程里判断event,然后返回,但是我线程里的行为不能分割,所以不能写成while()
{
   waitforsingleobject()    \\\\\\\}这样的情况下该如何最好的推出线程,

解决方案 »

  1.   

    用ExitProcess,获取ExitCode,这是最保险的
      

  2.   

    如果你这个线程的运行时间很长,有可能导致窗口关闭时还在运行,这时候你又非要安全的关闭线程,这就是个矛盾。不是不可以,比如在你那个线程函数里,所有循环的地方都检查一下退出标志,如果标志指示要退出了,那线程就return好了。但是这么做看起来很傻,所以lz应该重新考虑设计。
      

  3.   

    不能分割?线程里的行为总有能做点条件判断的地方吧?能判断就能退出,线程函数里中途退出就用ExitProcess,