2012-09-05 30 views

回答

3
var handler = MyEvent; 
if (handler == null) 
{ 
    Console.WriteLine("No listeners"); 
    return; 
} 

可以翻譯成

Dim handler = MyEventEvent 
If handler Is Nothing 
    Console.WriteLine("No listeners") 
    Return 
End If 

enter image description here

+0

然後我得到錯誤:'是一個事件,不能直接調用。 –

+0

你確定嗎?如果該事件被命名爲* MyEvent *,則通過* MyEventEvent * – sloth

+0

獲得委託人Ahh非常感謝。我的開發環境已經旋轉(: –

-1

我認爲這將是要麼

Dim handler As EventHandler = MyEvent 

Dim handler As EventHandler = AddressOf MyEvent 
+0

我已經嘗試了這兩個,但MyEvent不是一種方法,AddressOf必須得到一個方法。第一個不起作用,因爲他認爲我會打電話給事件:/ –

0

您需要使用Custom關鍵字聲明自定義事件以訪問基礎代理。這在MSDN Library article中有很好的解釋。

應該指出的是,捕捉像這樣的例外是非常不明智的非常。捕獲異常需要您恢復程序狀態,就好像事件從未引發一樣。撤銷任何更改都會導致部分執行的代碼。對於事件來說這是不可能的,隱式的事件契約是你不知道訂閱事件處理程序的代碼。這意味着完全不可能恢復狀態。捕獲塊必須出現在事件處理程序中,而不是在引發事件的代碼中。忽略這位博客試圖給你的建議。