我有一些使用一些数据表的简单功能,问题是在执行功能内存不释放后,用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;
}
}
答案 0 :(得分:3)
您仍在使用数据表作为数据源:
dataGridView2.DataSource = _dt2;
dataGridView5.DataSource = _dt3;
你不应该丢弃它们。或者首先将它们作为数据源删除。