今天使用From窗口Close后,發現From的資源還存在,並沒有釋放資源,只有在程序關閉的時候才去釋放。
Form1:button按鈕
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}
Form2:
public Form2()
{
InitializeComponent();
Trace.WriteLine("From2 InitializeComponent");
}
~Form2()
{
Trace.WriteLine("From2 dispose");
}
操作:From1點擊按鈕打開From2,然后關閉Form2,再打開Form2,關閉From2,最后關閉程序。看到的打印是
說明Close 並沒有釋放資源,只有在程序退出的時候才自動釋放
ps:在以下兩種情況下調用 Close 不會釋放窗體:(1) 窗體是多文檔界面 (MDI) 應用程序的一部分且是不可見的;(2) 您是使用 ShowDialog 顯示的該窗體。在這些情況下,需要手動調用 Dispose 來將窗體的所有控件都標記為需要進行垃圾回收。