我有一個應用程序(服務器)和WCF通過命名管道(所有.NET 4.0)連接的客戶端。一切正常。從客戶端到服務器和服務器到客戶端(回調)的調用方法都可以正常工作。現在,我該如何簡單地將一個事件從服務器發送到客戶端?WCF將事件發送到客戶端
我試圖做到的是:
- 客戶端調用立即返回服務器上的長期方法
- 當服務器已準備好處理它發送一個事件到客戶端
- 客戶端可以然後調用服務器上的方法以獲得結果
如何以乾淨的方式執行此操作?
我有一個應用程序(服務器)和WCF通過命名管道(所有.NET 4.0)連接的客戶端。一切正常。從客戶端到服務器和服務器到客戶端(回調)的調用方法都可以正常工作。現在,我該如何簡單地將一個事件從服務器發送到客戶端?WCF將事件發送到客戶端
我試圖做到的是:
如何以乾淨的方式執行此操作?
你可以看看它是異步執行的:How to: Call WCF Service Operations Asynchronously。 (這是一個很大的代碼粘貼在這裏,所以我只是離開鏈接)
如果你想變得更簡單,異步WCF調用是要走的路。在.NET 4.0中有async
關鍵字。或者您可以等待一段時間,然後調用服務器功能來查看文件是否準備就緒。爲了確保我會使用異步,更簡單快速地使用輪詢。
我總是有一個客戶端和一個服務器,所以我認爲發佈/訂閱實現可能會矯枉過正? – Enrico
[雙工服務](http://msdn.microsoft.com/en-us/library/ms731064.aspx)方案似乎適合您的要求,我不確定NamedPipes是否支持雙工通信,但是[this msdn文章](http://msdn.microsoft.com/en-us/library/ms730879.aspx)建議它。 – Jeroen
@Jeroen當服務器發佈它的事件發生在後臺線程上時呢?在這種情況下'OperationContext.Current'將是** null **,我將無法將該事件發佈到客戶端。 – JobaDiniz