【发布时间】:2014-11-27 17:37:48
【问题描述】:
我在同一台机器上有一个自托管的 WCF 服务主机和客户端。我在这里使用 WCF 进行进程间通信。我可以打开主机并让客户端在一段时间后连接到它,如下所示:
ServiceHost host = new ServiceHost(typeof(AIEngineLoader));
string hostAddress = string.Format("net.pipe://localhost/AIEngine/" + name);
var endPointBinding = new NetNamedPipeBinding();
endPointBinding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
endPointBinding.ReceiveTimeout = TimeSpan.MaxValue;
host.AddServiceEndpoint(typeof(IAIEngineLoader), endPointBinding, hostAddress);
host.Open();
主机在另一个控制台应用程序中运行。在启动控制台进程后等待一段时间(现在三秒),客户端能够连接到该主机。我不想等待预先指定的时间然后连接到主机。一种方法是在客户端捕获 CreateChannel 异常时在循环中阻塞等待。这个解决方案并不优雅。有没有办法让客户端检查主机是否正在侦听而不诉诸异常捕获?
【问题讨论】:
-
@fejesjoco 您提到的链接提供了一个似乎过于复杂的解决方案。我还没有准备好将我的代码复杂到那种程度以进行简单的检查。我更喜欢循环检查。
标签: c# wcf named-pipes inter-process-communicat