基础情况:
程序是WinForm的,用源程序试验还没发现这个问题,将一个应用程序复制成很多份,其中有几份(有时甚至是全部)有这个异常,也不是一打开程序就出现此异常
根据CLR调试,初步认为是线程操作问题,大致代码如下: if (th.ThreadState == ThreadState.Running)
{
th.Abort();
th = new Thread(new ThreadStart(Dothings)); //Dothings 需要执行比较长一点的时间
th.Start();
}
补充:以前也是用同样的程序,没出现过此问题,望各位指点
程序是WinForm的,用源程序试验还没发现这个问题,将一个应用程序复制成很多份,其中有几份(有时甚至是全部)有这个异常,也不是一打开程序就出现此异常
根据CLR调试,初步认为是线程操作问题,大致代码如下: if (th.ThreadState == ThreadState.Running)
{
th.Abort();
th = new Thread(new ThreadStart(Dothings)); //Dothings 需要执行比较长一点的时间
th.Start();
}
补充:以前也是用同样的程序,没出现过此问题,望各位指点
if (th.ThreadState == ThreadState.Running)
{
th.Abort(); GC.Collect();//强制内存回收 th = new Thread(new ThreadStart(Dothings)); //Dothings 需要执行比较长一点的时间
th.Start();
} 加上上面垃圾回收看看.
GC.Collect();//强制内存回收
弱弱地问一句:
这个会回收掉其他的内存吗? 程序里不只有这一个线程 要是把所有都回收了是不是有点不妥