我正在使用WCF向在同一台机器上运行的2个不同的win form应用程序发送和获取数据。我正在使用namedpipe和duplexchannel。我的客户端实现如下所示。
InstanceContext myContext = new InstanceContext(this);
NetNamedPipeBinding nb = new NetNamedPipeBinding();
nb.MaxBufferPoolSize = 5000000;
nb.MaxBufferSize = 500000;
nb.MaxReceivedMessageSize = 500000;
nb.ReceiveTimeout = TimeSpan.FromMinutes(5);
DuplexChannelFactory<IService> myProxy = new DuplexChannelFactory<IService>(myContext, nb, new EndPointAddress("net.pipe://localhost/MyService"));
IService myServiceClient = myProxy.CreateChannel();
服务器端实现如下所示:
NetNamedPipeBinding np = new NetNamedPipeBinding();
np.MaxBufferPoolSize = 5000000;
np.MaxBufferSize = 500000;
np.MaxReceivedMessageSize = 500000;
host.AddServiceEndpoint(typeof(IService), np, "net.pipe://localhost/MyService");
host.OpenTimeout = TimeSpan.FromMinutes(5);
host.CloseTimeout = TimeSpan.FromMinutes(5);
host.Open();
我可以通过回调将1个应用程序中的大约100个对象集合(ObservableCollection<Customer>
)传递给其他应用程序。但是如果我将它设为1000或更多对象,则会发生以下超时异常错误。
管道写入未完成 在分配的超时内 00:00:00。分配给此的时间 操作可能是一部分 更长的超时。
我的代码有什么问题?请帮我解决这个问题。
提前致谢...
答案 0 :(得分:1)