2013-08-22 57 views
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; 
    } 
} 
+0

使用['GC.GetTotalMemory'](http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory.aspx)来测量内存消耗并强制收集。 –

回答

3

你仍在使用自己的数据表作为数据源:

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

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

+0

作为数据源被删除不起作用,'dataGridView2.DataSource = null' – test