Никто не сталкивался с такой ситуацией? :
Клиент подписывается на ремоутные ивенты от сервера.
Всё нормально работает, но после некоторого времени не проходит вызов клиентского метода, определённого делегатом для обработки этого ивента.
На серверной стороне никаких эксепшенов.
Может тут GC как-то виноват? //предположение
"генерация" ивента происходит следующим образом (делал как написано в книже Microsoft .NET Remoting)
private void NotifyClients(GoodEventArgs args)
{
Console.WriteLine("NotifyClients called");
System.Delegate[] invkList = GoodEvent.GetInvocationList();
IEnumerator ie = invkList.GetEnumerator();
while(ie.MoveNext())
{
GoodEventHandler handler = (GoodEventHandler)ie.Current;
try
{
Console.WriteLine("\tInvoking " + ie.Current.ToString());
IAsyncResult ar = handler.BeginInvoke(this, args, null, null);
}
catch(System.Exception e)
{
Console.WriteLine("EXCEPTION: " + e.Message);
GoodEvent -= handler;
}
Console.WriteLine("\tSuccessfully invoked " + ie.Current.ToString());
}
}