基础情况:
    程序是WinForm的,用源程序试验还没发现这个问题,将一个应用程序复制成很多份,其中有几份(有时甚至是全部)有这个异常,也不是一打开程序就出现此异常
根据CLR调试,初步认为是线程操作问题,大致代码如下:                  if (th.ThreadState == ThreadState.Running)
                {
                    th.Abort();
                    th = new Thread(new ThreadStart(Dothings)); //Dothings 需要执行比较长一点的时间
                    th.Start();
                }

补充:以前也是用同样的程序,没出现过此问题,望各位指点

解决方案 »

  1.   

    应该不会死循环,我用的是for,最多就执行20次
      

  2.   

    代码有问题about()是提交一个请求,并没有立即中断操作,你需要随后检测线程状态,直到线程的state为stopped或者abouted才可以,否则后面的操作可能会造成异常。
      

  3.   


    if (th.ThreadState == ThreadState.Running)
    {
       th.Abort();   GC.Collect();//强制内存回收   th = new Thread(new ThreadStart(Dothings)); //Dothings 需要执行比较长一点的时间
       th.Start();
    } 加上上面垃圾回收看看.
      

  4.   


    GC.Collect();//强制内存回收
    弱弱地问一句:
    这个会回收掉其他的内存吗? 程序里不只有这一个线程 要是把所有都回收了是不是有点不妥