2016-04-13 6 views
1

私はこのスタックオーバーフローの質問への回答について困惑している:VS2013デバッガでイベントに追加されるメソッドの数を確認する方法はありますか?

IsVisibleChanged += delegate { UpdateReallyLoopRendering(); }; 

... IsVisibleChangedでUIElementです:

How to find list of events using Debugger (VS Professional 2012)?

私は、この行を含めいくつかのコードをリバースエンジニアリングして

public event DependencyPropertyChangedEventHandler IsVisibleChanged 

私は、呼び出しリストに追加されたメソッドの数が重複している可能性があり、重複する可能性があるメソッドがいくつかあることを懸念していました。デバッガ内の呼び出しリストにある項目数。上記のS.O.質問は、クイックウォッチウィンドウでこれを行う例を示していますが、その周りのテキストは横切っていますが、まだ存在しています。そして、答えの非交差部分は、それができないと言うようです。

so IS IsVisibleChangedの呼び出しリストの項目を参照するか、少なくとも取得する方法がありますか?

EDIT:この質問はC# Know how many EventHandlers are set?の重複としてフラグが立てられましたが、私は

Aので、それは重複だどのように表示されていない:私の質問は、マイクロソフトのUIElement

Bについてです:私の質問はデバッガでの操作方法

+0

どのように重複していますか? 「この質問には既に回答があります」という例は、自分自身のイベントハンドラの例です。** UIElement **にどのように適用しますか?また、N.B.私の質問は**デバッガ**でこれを行う方法です。 – user316117

答えて

0

Delegate.GetInvocationList()メソッドを使用できます。以下のサンプルコードを参照してください。

public class Program 
{ 
    public static void Main() 
    { 
     Test t = new Test(); 
     t.Click += Click_1; 
     t.CheckInvocationList(); 
    } 

    private static void Click_1(object sender, EventArgs e) {} 
} 

public class Test 
{ 
    public event EventHandler Click; 

    public void CheckInvocationList() 
    { 
     var t = Click; 
     if(t != null) 
     { 
      var methods = t.GetInvocationList(); 
      Console.WriteLine(methods.Length); // Output = 1 
     } 
    } 
} 
+0

私のケースにあなたの提案をどうやって適用しますか? _IsVisibleChanged.GetInvocationList()_を実行しようとすると、コンパイラはIsVisibleChangedが+ =または - =の左側にしか現れないことを指摘します。 – user316117

関連する問題