2017-08-10 12 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メソッドを呼び出すことによって行うことができます。あなたが取得するリストには、AddHandlerメソッドをイベントにアタッチする必要があるEventDescriptorオブジェクトが含まれています。

    .NETランタイム全体のすべてのイベントにアタッチすることはできませんが、特定のオブジェクトのイベントにアタッチすることはできます。

    私は役立つことを願っています。

  • 関連する問題