6

イベントを登録および登録解除する従来の方法 (+= -=) がある場合、何かが現在登録されているかどうかを確認する方法もありますか?

1 つのタイマーに登録できる 2 つのメソッドがあるとします。何かが にすでに登録されている場合.Elapsed、他に何も登録したくありません (また、何かを複数回登録したくありません)。

現在特定のイベントに登録されているメソッドを調べる方法はありますか?

4

2 に答える 2

5

本当にそのような動作が必要な場合は、イベントの add{} および remove{} 機能のオーバーロードを使用するのが最善の方法だと思います。

public class Foo
{

   private EventHandler<ElapsedEventArgs> _elapsed;

   public EventHandler<ElapsedEventArgs> Elapsed
   {
       add
       {
           if( _elapsed == null )
               _elapsed += value;
           else
               throw new InvalidOperationException ("There is already an eventhandler attached to the Elapsed event.");
       }
       remove
       {
           _elapsed -= value;
       }
   }

}
于 2013-01-14T14:41:53.913 に答える
1

GetInvocationList() を使用して、順番にカウントを取得できます

于 2013-01-14T14:40:04.060 に答える