datatable资源的释放问题
我做了个测试:
public partial class Form2 : Form
{
DataTable MyDataTable;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyDataTable = new DataTable();
MyDataTable.Columns.Add( "id ", typeof(int));
MyDataTable.Columns.Add( "name ", typeof(string));
MyDataTable.Rows.Add(1, "a ");
MyDataTable.Rows.Add(2, "b ");
MyDataTable.Rows.Add(3, "c ");
textBox1.DataBindings.Add( "text ", MyDataTable, "id ");
dataGridView1.DataSource = MyDataTable;
}
private void button2_Click(object sender, EventArgs e)
{
MyDataTable = new DataTable();
MyDataTable.Columns.Add( "field1 ", typeof(int));
MyDataTable.Columns.Add( "fiedl2 ", typeof(string));
MyDataTable.Rows.Add(1, "x ");
MyDataTable.Rows.Add(2, "y ");
MyDataTable.Rows.Add(3, "z ");
MyDataTable.AcceptChanges();
textBox2.DataBindings.Add( "text ", MyDataTable, "field1 ");
dataGridView2.DataSource = MyDataTable;
}
}
点button1时,新建datatable,并绑定。绑定到textbox1, datagridview1
在点button2, 建一个同名的datatable,绑定到textbox2, datagridview2
原来的datagridview1的数据还是存在,就是说现在系统中同时存在两个datatable的数据?原来的datatable资源没有释放?
如果程序中重复这样的动作(如搜索数据,adapter fill 数据一个datatable中),岂不是系统会越用越慢?
[解决办法]
应该没事的,你new的不是同一个DataTable MyDataTable吗??
而且不是有GC(垃圾回收机制)吗??
[解决办法]
DataTable这种托管资源不用你费心,你就扔那就行了,.NET 框架替你干活了.
你要关心的是数据库连接,网络链接,Stream等.
[解决办法]
友情UP