比方说,我有一个名为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