数据表不释放内存

时间:2013-08-22 13:00:38

标签: c# winforms datatable

我有一些使用一些数据表的简单功能,问题是在执行功能内存不释放后,用profiler检查内存使用情况

private void button1_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(textBox1.Text.ToString()))
    {
        //Before 6,920K
        this.Cursor = Cursors.WaitCursor;
        Inventory _INV = new Inventory();
        DataTable _dt1 = _INV.Check_Inventory_Item(textBox1.Text.ToUpper().ToString().Trim());
        dataGridView1.DataSource = _dt1;

        DataTable _dt2;
        DataTable _dt3;

        _INV.Check_Balances(textBox1.Text.ToUpper().ToString().Trim(), out _dt2, out _dt3);
        dataGridView2.DataSource = _dt2;
        dataGridView5.DataSource = _dt3;

        dataGridView3.DataSource = null;
        dataGridView4.DataSource = null;

        _dt1.Dispose(); _dt1 = null;
        _dt2.Dispose(); _dt2 = null;
        _dt3.Dispose(); _dt3 = null;

        GC.Collect();
        //After 58,450K
        this.Cursor = Cursors.Default;
    }
}

1 个答案:

答案 0 :(得分:3)

您仍在使用数据表作为数据源:

dataGridView2.DataSource = _dt2;
dataGridView5.DataSource = _dt3;

你不应该丢弃它们。或者首先将它们作为数据源删除。