我是否必须手动删除每个实例的所有事件处理程序?

时间:2010-07-18 09:32:37

标签: .net language-agnostic event-handling disposing

考虑这个课程:

Class Item : Inherits ItemBase

    Public Sub New
        AddHandler MyEvent, AddressOf MyEventHandler
    End Sub

    Private Sub MyEventHandler()    
    End Sub

    Private Sub MySecondEventHandler() Handles MyBase.MyEvent
    End Sub

End Class

我是否必须在销毁此项目时手动删除处理程序?这不是由GC或托管代码编译器的其他工具完成的吗?

2 个答案:

答案 0 :(得分:0)

在对它的所有引用都已消失(包括所有事件处理程序)之前,对象不会被Garbage Collected,也不会被销毁,直到它被Garbage Collected。你真正需要做的是删除同一个类中的处理程序,一旦你完成它们就会添加处理程序。

答案 1 :(得分:0)

如果你的对象被标记为死,这意味着没有对它的引用,它的内部引用现在来自死对象,并且从这一点开始无关紧要。因此,您不必手动删除处理程序。