2009-07-27 60 views
0

學習從INGO RAMMER的「高級.NET遠程」,我試圖用下面的代碼觸發事件給客戶:事件問題在.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變爲空。

但隨着網絡恢復,客戶端將嘗試連接,獲取遠程對象並重新註冊事件,因爲它對於啓動而言是一樣的,因爲MessageArrived不爲空,似乎重新註冊成功。

問題是我仍然有異常將調用委託,然後刪除。據我瞭解,這不會提高expcetion因爲。客戶端再次聯機並重新連接()和連接()方法共享相同的代碼...

任何人都可以幫我嗎?

回答

0

檢查註銷事件是否正確發生。當客戶端斷開連接時,最好優先註銷這些事件。