2010-07-18 2 views
2

Рассмотрим этого класса:Нужно ли вручную удалять все обработчики событий для каждого экземпляра?

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 или другим инструментом компилятора с управляемым кодом?

ответ

0

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

0

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

Смежные вопросы