当前位置:编程学习 > C#/ASP.NET >>

线程中变量释放问题,在线等


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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,