2010-06-23 27 views
3

.NET遠程處理用於我的brownfield應用程序。我們決定爲我們的遠程處理方法設置超時。遠程處理設置超時

System.Collections.IDictionary properties = new System.Collections.Hashtable(); 
properties["name"] = Ipc_Channel_Name; 
properties["timeout"] = 1 * 1000; 

IChannel clientChannel = new IpcClientChannel(properties, null); 
ChannelServices.RegisterChannel(clientChannel, false); 

問題是,看起來超時不起作用。我通過在調用的代碼中設置System.Threading.Thread.Sleep(5 * 1000);來檢查它。 IpcClientChannel不支持超時的原因是什麼?

如何設置超時時間?

+0

任何想法?問題仍然存在。 – 2010-06-24 13:22:20

回答

4

設置IpcClientChannel超時值的屬性名稱不是「超時」。名稱是「connectionTimeout」。見Client Channel PropertiesMSDN)。那麼它應該工作。

System.Collections.IDictionary properties = new System.Collections.Hashtable(); 
properties["name"] = Ipc_Channel_Name; 
properties["connectionTimeout"] = 1 * 1000; 

IChannel clientChannel = new IpcClientChannel(properties, null); 
ChannelServices.RegisterChannel(clientChannel, false); 
+0

嗨,Jehof。謝謝你的回答。從MSDN:「connectiontimeout是一個整數,指定等待連接成功的毫秒數,0或-1表示無限超時期限,缺省值爲無限。」如果您將connectiontimeout設置爲1 * 1000和System.Threading.Thread.Sleep(5 * 1000);在被調用的代碼中,你不會得到任何異常。它將等待5秒鐘。我通過修改客戶端的代碼來解決它。 – 2010-07-08 11:04:04

+0

@MegaHerz對不起,但我不comprehand。您將connectiontimeout設置爲1000毫秒,並且服務器休眠5000毫秒> 1000毫秒。它肯定會超時。你爲什麼沒有例外?你的意思是這是一個錯誤? – Gqqnbig 2012-02-11 13:19:54