日期:2014-05-17  浏览次数:20379 次

如何释放多线程所占用的系统内存。
我写了一个winform程序,用多线程从GSD获取数据放到本地数据库或内存,当窗体关闭时,我把线程都关闭
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
  {
  for (int i = 0; i < threadList.Count; i++)
  {
  threadList[i].Abort();
  }
  }
但是,这样只是清除了程序所占用的CPU而程序占用的内存并没有释放,任务管理器中这个进程还一直存在,怎么结束这个进程,并释放它所占用的内存啊?

------解决方案--------------------
直接Process.GetCurrentProcess().Kill();野蛮点,直接Kill进程。
或者每个thread.IsBackground = true;
------解决方案--------------------
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();
Application.Exit();
}
------解决方案--------------------
使用Abort结束线程是非常“暴力”“野蛮”的做法,哪怕是用下面这种很简陋的办法也会表现得善良一些啊。

如何:创建和终止线程(C# 编程指南)
------解决方案--------------------
Kill太暴力了,System.Environment.Exit(0) 这个好点,不过IsBackground就够了吧,设置了IsBackground在系统退出时候会结束线程的。