2009-07-27 3 views
0
학습 INGO RAMMER의 "고급 .NET Remoting에"내가 고객에게 이벤트를 발사에 대해 다음 코드를 사용하려고에서

:이벤트 문제 .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

이벤트의 등록이 제대로 수행되고 있는지 확인하십시오. 클라이언트 연결이 끊어지면 이벤트를 정상적으로 등록 취소하는 것이 좋습니다.