Учится ИНГО трамбовки «Advanced .NET Remoting», я пытался использовать следующие коды для стрельбы события клиентов:события Проблема в .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 не был нулевым.
Проблема в том, что я все еще получаю исключение, вызывает делегат, который был удален. Насколько я понимаю, это не должно увеличивать расходы. клиент снова подключен и повторно подключается(), а метод connect() использует те же коды ...
Может кто-нибудь мне помочь?