2012-10-11 63 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關鍵字。或者您可以等待一段時間,然後調用服務器功能來查看文件是否準備就緒。爲了確保我會使用異步,更簡單快速地使用輪詢。

相關問題