比方說,我有一個名爲Dialog的類擴展了Form。還有的對話框和確定按鈕上的文本框,當用戶點擊OK,通過一個事件返回的文本框的值:從C#和垃圾收集中的事件中分離匿名偵聽器
public class Dialog: Form
{
public delegate void onDialogValueReturned(object sender, DialogEventArgs e);
public event onDialogValueReturned DialogValueReturned;
.
.
.
OKButton.Click += (sender, evt) =>
{
DialogEventArgs e = new DialogEventArgs();
e.Value =myTextBox.Text;
DialogValueReturned(this, e);
this.Close();
};
在我的呼喚形式,我實例化的本地方法的對話:
private void Foo()
{
Dialog D = new Dialog("blah blah");
D.DialogValueReturned += (dialog, evt) =>
{
//do something with evt.Value
};
D.ShowDialog();
}
該對話框可能會在一天中由用戶實例化數十次甚至數百次。
當作用域離開私有方法(包括匿名偵聽器的所有管道)時,垃圾回收器是否自動清理與對話框實例有關的所有內容?
由於
'Form'實現'IDisposable',所以你可以簡單地在你完成它的時候處理一個表單。應該沒有必要。 – 2012-03-06 20:23:23