最好保存一下子线程句柄,用其的Join(),就可完全释放。

解决方案 »

  1.   

    另外,在c# 据我所知,如果你建立了20 个线程(或者使用线程池)在某线程中止或正常完成时,是不是见到立即线程减少(还是20),而当你再次建新线程时会见到线程并没有增加(还是20)比如有20 线程
    其中一线程完成了
    线程表还是20线程(比如任务管理器中见到的线程数)
    再建一新线程
    线程表还是20线程而不是21估计是C# 的老问题,它的运行环境就好象 int[] i = new [5] 中的5一样,要先申请一个运行环境资源吧,整理和重用废旧才是它的大学问至于线程资源可以使用 abort 和join 是会释放的,其实不使用它也会释放,只是不会马上减少,这个问题和是否多线程无关
      

  2.   

    其实,thread.Abort会引发一个异常。在线程内将会捕捉到这个异常,因次可以写成这样
    void run()
    {
       try
       {
          //进行操作
       }
       finally
       {
          //释放资源
       }
    }
    但还有个问题,如果主线程是突然异常终止的,可能并未执行thread.Abort,这样也会抛出异常给子线程吗?另外,我是在循环中创建线程的,无法保存句柄,该怎么办?
      

  3.   

    那你把子线程的IsBackground打开,即设为true。