2009-07-27 10 views
0

apprentissage de « Advanced .NET Remoting » ONGI RAMMER, j'ai essayé d'utiliser les codes suivants pour le tir des événements aux clients:événement Problème dans .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; 
} 
} 

Quand je simule un problème de réseau côté client, le délégué du client a été supprimé par - = comme prévu, et le MessageArrived est devenu nul. Mais comme le réseau a été restauré, le client essayera de se connecter, d'obtenir un objet distant et de réenregistrer l'événement comme il le fait pour le démarrage, il semble que le réenregistrement ait réussi car le MessageArrived n'était pas nul.

Le problème est que j'ai toujours l'exception invoquera le délégué qui a ensuite été supprimé. Si je comprends bien, cela ne doit pas augmenter expcetion coz. le client est à nouveau en ligne et re-connect() et connect() méthode partage les mêmes codes ...

Quelqu'un peut-il m'aider?

Répondre

0

Vérifiez si la suppression des enregistrements est en cours ou non. Lorsque le client est déconnecté, il est préférable de désinscrire les événements avec élégance.

Questions connexes