从 INGO RAMMER 的“Advanced .NET Remoting”中学习,我尝试使用以下代码向客户端触发事件:
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 变为空。
但是随着网络恢复,客户端将尝试连接,获取远程对象并重新注册事件,就像启动时一样,似乎重新注册成功,因为 MessageArrived 不为空。
问题是我仍然得到异常会调用然后被删除的委托。据我了解,这不会引起期望。客户端再次在线并且 re-connect() 和 connect() 方法共享相同的代码...
有谁能够帮我?