Thread thread = new Thread(new ThreadStart(ThreadProcess));
thread.Start();public void ThreadProcess()
{
   While(flag)
{
.....
}
}如果flag为false时,ThreadProcess执行完毕,这个时候thread结束了吗?
还需要调用 thread.Abort()等函数来强制关闭吗?
谢谢

解决方案 »

  1.   

    flag为False只是跳出了while循环,如果后面还有代码还会继续执行,一直到ThreadProcess函数结束,线程才会终止。
      

  2.   

    你把循环变量置为false  只是让这个循环停止了,但是这个线程正在执行的代码还会继续执行,直到执行完毕,如果你希望等线程自动执行完毕了才正常退出,那么你就要使用Join这个函数,这个函数会挂起线程直到它相关的都执行完毕,然后才终止线程,这样线程才是安全退出,但有时需要立刻终止线程,所以要用到Abort来强制终止
      

  3.   

    方法执行完后,线程自然会结束,,,如果方法没有执行完想结束线程,可以用thread.Abort()
      

  4.   

    不需要的,只要程序执行完毕,线程自动结束。按楼主的写法,用一个死循环保持一个线程不中断,如果线程是用前台方式运行的话,主程序退出了,会出现线程没有办法退出的现象。如果线程是用后台方式运行的话,就算线程是死循环,只要主程序退出,那么线程也会结束。
    所以,要么用线程池,要么把线程设置为后台运行方式。设置方法:IsBackground=true;