Dot-Net
我如何知道 .net 事件是否已被處理?
我編寫了一些程式碼來處理事件,如下所示:
AddHandler myObject.myEvent, AddressOf myFunction起初似乎一切正常,但是當我執行調試器時,我發現經常,每次觸發
myFunction都會執行幾次。myObject.myEvent我發現我已經允許程式碼添加事件處理程序多次執行,從而導致了這種行為。有沒有辦法我可以做這樣的事情?
If myObject.myEvent is not handled Then AddHandler myObject.myEvent, AddressOf myFunction End If
刪除處理程序,然後添加它。這樣它就永遠不會被複製。如果您的對像不存在,請注意空引用錯誤。我也被抓住了,當您在創建處理程序的子外部刪除處理程序時可能會發生這種情況。
if not myObject is nothing then RemoveHandler myObject.myEvent, AddressOf myFunction if not myObject is nothing then AddHandler myObject.myEvent, AddressOf myFunction
我知道這是一篇舊文章,但只是想為那些朝這個方向尋找的人添加一個解決方案……
VB.Net 創建一個特殊的私有成員變數,
<YourEvent>Event然後您可以使用它來測試 Nothing。Public Event MyClick As EventHandler Private Sub OnMyClick() If MyClickEvent IsNot Nothing Then RaiseEvent MyClick(Me, New EventArgs()) Else ' No event handler has been set. MsgBox("There is no event handler. That makes me sad.") End If End Sub來自此處的答案:確定是否已附加事件