17
如何使用匿名方法使用RemoveHandler?VB.NET RemoveHandler&匿名方法
這是我如何添加一個處理MyEvent事件類的MyClass的
AddHandler MyClass.MyEvent, Sub()
...
End Sub
如何再使用RemoveHandler刪除的處理程序中MyEvent事件
如何使用匿名方法使用RemoveHandler?VB.NET RemoveHandler&匿名方法
這是我如何添加一個處理MyEvent事件類的MyClass的
AddHandler MyClass.MyEvent, Sub()
...
End Sub
如何再使用RemoveHandler刪除的處理程序中MyEvent事件
在一般來說,如果您需要退訂事件,我會建議不要使用這樣的lambda,而是使用標準方法。
這就是說,你仍然可以使用匿名方法,但是你需要存儲一個對它的引用來取消訂閱。如果您必須取消訂閱匿名方法,則至少應將代表存儲在變量中以便稍後刪除它:
Dim subscription = Sub()
' ...
End Sub
AddHandler MyClass.MyEvent, subscription
' Later
RemoveHandler MyClass.MyEvent, subscription
使感官。如果是這種情況,那麼當我必須在稍後將其刪除時,使用匿名方法毫無意義。 – acermate433s
@ acermate433s:的確如此,這就是爲什麼我建議使用標準方法。 lambda,thoguh的一個優點是你可以關閉局部變量而不是將它們提升到課程級別,這在有時可能有用... –