具有匿名方法的TextBox +事件和Dispose

时间:2013-10-31 15:58:31

标签: c# winforms events garbage-collection

示例代码:

textBox.Click += (s, e) => { ... };
textBox.Dispose ();
textBox = null;

GC会收集textBox吗?

2 个答案:

答案 0 :(得分:1)

最终,是的。当GC决定这样做时。

答案 1 :(得分:1)

是的,它将被收集。删除事件处理程序仅在未删除对事件的的引用时才很重要。文本框是源,你将引用归零,所以没关系。

如果你这样做会有问题:

parent.Add(textBox);
parent.Click += textBox.HandleParentClick;
parent.Remove(textBox);

父级在此处保留在范围内,因此事件对文本框的引用(通过其处理程序)也会保留,即使已删除通过“添加/删除”直接引用文本框。