Нужно ли вручную удалять все обработчики событий для каждого экземпляра? - PullRequest
2 голосов
/ 18 июля 2010

Рассмотрим этот класс:

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 голосов
/ 18 июля 2010

Если ваш объект помечен как мертвый, это означает, что на него нет ссылок, и его внутренние ссылки теперь относятся к мертвому объекту и не имеют значения с этой точки. Так что вам не нужно удалять обработчики вручную.

0 голосов
/ 18 июля 2010

Объект не будет собираться мусором, пока не будут удалены все ссылки на него (включая все обработчики событий), и не будет уничтожен, пока не будет собран мусор.Что вам действительно нужно сделать, это удалить обработчики в том же классе, который добавляет обработчики, как только вы закончите с ними.

...