2011-12-14 8 views
2

GetInvocationList()した後、それは私のWCFサービスの主なイベントハンドラです。 私もの取得に適したなeventHandler

private void MyEventHandler(object sender, AdministrationEventArgs e) 
{ 
//code 
} 

を持っている私は、各ハンドラにMyEventHandlerを呼び出す

AdministrationEventHandler userToAddEventHandler = new AdministrationEventHandler(MyEventHandler); 

、その後、私のBroadcast()方法で

MainAdministrationEventHandler += userToAddEventHandler; 

新しい要素を追加します。 AdministrationEventArgs e引数に基づいてBroadcast()に電話します。

MainAdministrationEventHandlerというリストを作成し、このリストの適切な要素についてBroadcast()を呼び出しましたが、機能しません。

私はMainAdministrationEventHandler.GetInvocationList()

によってすべてのハンドラを取得しています、それはGetInvocationList()でそれを取得した後e引数をチェックすることは可能ですか?

またはどうすれば他の方法でと呼び出すことができますか?Broadcast()適切なハンドラーに?

答えて

3

適切なハンドラは何ですか?あなたのコードに基づいて、タイプAdministrationEventHandlerのハンドラだけをそのイベントに割り当てることができるからです。

また、GetInvocationList()から返されるリストには、呼び出すハンドラしか含まれていません。今回はまだ呼び出されていないので、それらを呼び出してeを渡す必要があります。

このような何かを行う必要があります

例えば
AdministrationEventArgs args = new AdministrationEventArgs(); 
Delegate[] dels = MainAdministrationEventHandler.GetInvocationList(); 
if (dels != null) 
    foreach (Delegate handler in dels) 
     handler.Invoke(this, args); 
+0

私は3つの異なるAdministrationEventArgsを持っています。 AdministrationEventHandlerごとに1つ。今はforeachループでそれらを見たいと思い、3つのハンドラのうちの2つを呼び出します。出来ますか? – Saint

+0

私はあなたが.Netの出来事を誤解しているかもしれないと思います。ここには[チュートリアル](http://msdn.microsoft.com/en-us/library/aa645739(v = vs.71).aspx)があります。 'OnChanged()'メソッドの例1を見てください。各イベント呼び出しは、同じ 'AdministrationEventArgs'インスタンスを取得します。 'AdministrationEventArgs'の情報に基づいて別のことをしたい場合は、1ハンドラを割り当ててifステートメントを入れます。 –

+0

これがあなたの質問に対する答えであれば、そのようにマークしていただけますか?ありがとう。 –

関連する問題