【发布时间】:2014-09-17 08:15:11
【问题描述】:
我正在使用 WCF 和 NamedPipes 进行进程间通信。
每个进程侦听一个唯一的命名管道,其他进程很容易发现。
我遇到的问题与 2 个进程几乎同时试图相互交谈有关。我假设在不同的管道上,但谁知道 WCF 发生了什么......
基本上流程是这样的:进程 1 在管道 2 上调用进程 2 的方法,几乎同时进程 2 在管道 1 上调用进程 1 的方法。发生这种情况时,我在 ICommunicationObject.Close() 调用中不断收到 TimeoutExceptions。
我已经尝试过 NamedPipes 和 NetTcp 并且都遇到了同样的问题。另一方面,BasicHttp 不...工作正常,但我不应该在同一台机器上使用 BasicHttp 进行 IPC。
另一个重要信息。如果我使用 Dispatcher.BeginInvoke() 将我的回复电话排入队列,那么它可以工作。 看起来排队下一个调用让 WCF 有时间在开始下一个回调之前完成第一个调用。但是,当进程在不同的管道上进行通信时,为什么这甚至很重要呢??
非常感谢任何意见
【问题讨论】:
标签: c# .net wcf ipc named-pipes