2017-08-10 29 views
0

我一直在試圖找到一種方法來獲取所有用戶激活事件的列表,以便如果應用程序崩潰它可以提供完整的列表導致事故發生的所有事件,這將有助於發現問題。以編程方式獲取Vb.net中用戶已激活的事件列表

這是可能的,而不必手動調用每一個事件內的東西?

如果我能得到類似於Visual Studio提供的列表,這將是一個很大的幫助。 enter image description here

當前程序崩潰時調用自定義表單來通知用戶;

Dim currentDomain As AppDomain = AppDomain.CurrentDomain 
Private Sub MYExHandler(ByVal sender As Object, 
    ByVal e As UnhandledExceptionEventArgs) 
    Dim EX As Exception 

    EX = e.ExceptionObject 
      frm_MsgError.ErrorMsg = EX.StackTrace 
    frm_MsgError.ShowDialog() 
End Sub 

Private Sub MYThreadHandler(ByVal sender As Object, 
ByVal e As Threading.ThreadExceptionEventArgs) 
    frm_MsgError.ErrorMsg = e.Exception.StackTrace 
    frm_MsgError.ShowDialog() 
     End Sub 

Private Sub frm_Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    AddHandler currentDomain.UnhandledException, AddressOf MYExHandler 
     AddHandler Application.ThreadException, AddressOf MYThreadHandler 

因此,如果我也可以在這裏獲得列表,那將會更好。 任何意見,不勝感激。謝謝

回答

0

在這種情況下,答案可悲的是,你想要做的只是不起作用。

瞭解爲什麼你必須知道什麼是「事件」。一個事件對於3個函數和一個EventHandlerList來說基本上是一個很好看的語法。

3層的功能是:

  • 添加處理程序的哈希集合
  • 取下散列的處理程序設定的特定參數
指定哈希內部
  • 調用的所有處理程序

    沒有什麼更多。如果您使用Custom關鍵字聲明事件,則可以自己實現這些功能。

    這意味着沒有用於所有事件處理程序或所有事件使用的任何常見功能的神奇中央存儲。每個事件都是獨立的。

    這就是說,有一種方法可以獲取單個類/實例的所有事件並附加到它們。這可以通過調用類的類型GetEvents方法來完成。您獲得的列表包含EventDescriptor對象,該對象提供需要附加到事件的AddHandler方法。

    雖然無法附加到整個.NET運行時的所有事件,但您可以附加到特定對象的事件。

    我希望有幫助。

  • 相關問題