2012-10-11 68 views
3

我有一个应用程序(服务器)和WCF通过命名管道(所有.NET 4.0)连接的客户端。一切正常。从客户端到服务器和服务器到客户端(回调)的调用方法都可以正常工作。现在,我该如何简单地将一个事件从服务器发送到客户端?WCF将事件发送到客户端

我试图做到的是:

  • 客户端调用立即返回服务器上的长期方法
  • 当服务器已准备好处理它发送一个事件到客户端
  • 客户端可以然后调用服务器上的方法以获得结果

如何以干净的方式执行此操作?

+0

我总是有一个客户端和一个服务器,所以我认为发布/订阅实现可能会矫枉过正? – Enrico

+0

[双工服务](http://msdn.microsoft.com/en-us/library/ms731064.aspx)方案似乎适合您的要求,我不确定NamedPipes是否支持双工通信,但是[this msdn文章](http://msdn.microsoft.com/en-us/library/ms730879.aspx)建议它。 – Jeroen

+0

@Jeroen当服务器发布它的事件发生在后台线程上时呢?在这种情况下'OperationContext.Current'将是** null **,我将无法将该事件发布到客户端。 – JobaDiniz

回答

1

如果你想变得更简单,异步WCF调用是要走的路。在.NET 4.0中有async关键字。或者您可以等待一段时间,然后调用服务器功能来查看文件是否准备就绪。为了确保我会使用异步,更简单快速地使用轮询。

相关问题