2009-07-27 9 views
0

は、私がクライアントにイベントを発射するために、次のコードを使用しようとしました:イベント問題INGO RAMMERの「アドバンスド.NETリモート処理」から学ぶ

foreach (Delegate del in MessageArrived.GetInvocationList()) 
{ 
try 
{ 
mah = (MessageArrivedHandler) del; 
mah(msg); 
} 
catch (Exception e) 
{ 
Console.WriteLine("Exception occured, will remove Delegate"); 
MessageArrived -= mah; 
} 
} 

私はクライアント側でネットワークの問題をシミュレートすると、クライアントのデリゲートが期待どおりに - =によって削除され、MessageArrivedがnullになりました。

しかし、ネットワークが復元されると、クライアントは接続しようとし、リモートオブジェクトを取得し、起動時に同じようにイベントを再登録します。MessageArrivedがnullでないため、再登録が成功したようです。

問題はまだ削除された代理人を呼び出す例外があります。私が理解するように、これはexpcetion cozを上げてはならない。クライアントは再びオンラインになり、再接続()とconnect()メソッドは同じコードを共有します...

誰かが私を助けることができますか?

答えて

0

イベントの登録解除が正しく行われているかどうかを確認してください。クライアントが切断されると、イベントを正常に登録解除することをお勧めします。

関連する問題