远程设置超时时间

4

.NET 远程调用被应用于我的 旧有 应用程序中。我们决定为我们的远程调用方法设置超时时间。

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不支持超时的原因吗?
我该如何设置超时时间?

有任何想法吗?这个问题仍然存在。 - Andrei Schneider
1个回答

5

设置IpcClientChannel超时时间的属性名不是"timeout",而是"connectionTimeout"。请参见客户端通道属性MSDN)。这样应该可以正常工作。

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);

你好,Jehof。感谢你的回答。根据MSDN的说明:“connectiontimeout是一个整数,用于指定等待成功连接的毫秒数。0或-1表示无限超时期。默认值为Infinite。”如果你将connectiontimeout设置为1*1000并在调用代码中使用System.Threading.Thread.Sleep(5 * 1000);,你不会得到任何异常。它会等待5秒钟。我通过修改客户端代码来解决这个问题。 - Andrei Schneider
@MegaHerz 抱歉,我不理解。您将连接超时设置为1000毫秒,而服务器休眠5000毫秒> 1000毫秒。它肯定会超时。为什么没有出现异常?您的意思是这是一个错误吗? - Gqqnbig
如果您正在寻找“客户端通道属性”页面,则已移动。现在它在MSDN上这里 - Ian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接