线程中变量释放问题,在线等
private void bt_start_Click(object sender, EventArgs e)
{
th1 = new Thread(new ThreadStart(ExportStart));
th1.IsBackground = true;
th1.Start();
}
public void ExportStart()
{
controlstatus(false);
string sqlstr = "select top 1000 * from medic_base";
DataSet ds = dbc.GetDataSet(sqlstr);
ds = null;
controlstatus(true);
}
运行完之后,内存一直没有释放!! C# --------------------编程问答-------------------- --------------------编程问答-------------------- 大神呢 --------------------编程问答-------------------- --------------------编程问答-------------------- ds = null;
并不会立即调用。net的垃圾回收 --------------------编程问答-------------------- 楼上说的是一方面 垃圾回收并不是立即调用的
还有 代码不太完整哦
也有可能是 GetDataSet 方面里面对 非托管资源的使用没有释放?
如果
controlstatus
GetDataSet
方法里面没有问题的话
应该就是楼上说的问题了
--------------------编程问答-------------------- dbc.GetDataSet(sqlstr); 这个方法里一定有非托管资源没有释放
先试试强制GC.Collect();如果有效就能说明问题,但不推荐这么去解决。 --------------------编程问答-------------------- c#,gc回收不是即时的,微软明确提出不推荐手动调用gc回收,除非不得已的特殊情况,如果要手动回收,写非托管代码。 --------------------编程问答-------------------- 有人告诉你方法执行完,内存就被回收吗?
补充:.NET技术 , C#