0

我有使用一些数据表的简单函数,问题是在执行函数内存未释放后,使用探查器检查内存使用情况

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;
    }
}
4

1 回答 1

3

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

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

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

于 2013-08-22T13:16:12.167 回答