【发布时间】:2012-09-13 11:23:53
【问题描述】:
我有一个循环运行的程序,每次迭代都在不同的线程中运行,我正在创建打开新服务主机的新进程:
ServiceHost _host = new ServiceHost(_service, new Uri("net.pipe://localhost/" + i_PipeName));
_host.AddServiceEndpoint(typeof(ICommandService), new NetNamedPipeBinding() { TransferMode = TransferMode.Buffered }, i_PipeName);
_host.Open();
在我的主程序中,我通过以下方式连接到开放的 .net 管道:
ICommandService ServiceProxy = ChannelFactory<ICommandService>.CreateChannel
(new NetNamedPipeBinding(), new EndpointAddress(@"net.pipe://localhost/" + i_PipeName" + @"/" + i_PipeName));
所以我的问题是,对于前 200 多个过程/迭代它工作正常,我可以打开连接并传递消息,但后来开始出现错误:
没有端点监听 net.pipe://localhost/pipea0360/pipea0360 可以接受 信息。这通常是由不正确的地址或 SOAP 操作引起的。 如果存在,请参阅 InnerException,了解更多详细信息。
我的问题是我可以并行打开的管道数量是否有任何限制?
是不是因为我开了这么多进程?
【问题讨论】:
-
您是否遵循异常的建议来See InnerException?它可以帮助您确定问题的实际原因。也许您可以将内部异常的描述编辑到您的问题中。
-
@MvanGeest 内部异常与外部异常相同:net.pipe://localhost/pipea0360/pipea0360 上没有可以接受消息的端点侦听。
-
您正在为每个 _host 创建一个新线程,因此您要创建 200 多个线程?为什么?我非常有信心最佳线程数少于 200。为什么超过 200 _host?
-
我正在模拟多个并行登录
-
好的,为什么超过 200 个线程?为什么你认为这是多个管道的问题?您是否认为这可能是线程数问题?
标签: c# .net named-pipes net.pipe