2013-09-30 228 views
3

我必須使用WCF服務啓動一個長時間運行的進程,現在我不需要結果,但我可能很快就需要它,所以假設兩種情況都執行一個函數的動作。WCF長時間運行的過程

我嘗試不同的方法:

  1. 服務器是同步的,客戶端發出的同步調用使用另一個進程活路
  2. 服務器是同步的,在客戶端讓使用相同的過程的異步調用可能被關閉
  3. 服務器是異步,客戶端使得使用相同的過程

同步呼叫如果客戶端關閉與SERV通信呃,服務器殺死執行,所以它不能完成任務?

哪種避免此情況的最佳方法是?

使用Task類在服務器中執行代碼是一件好事嗎?

+0

避免什麼情況?如果客戶端斷開連接,您是否希望服務器停止執行? –

+0

無論如何,我想繼續完成任務 –

回答

-1

我不認爲WCF是你的解決方案在這裏,在WCF一旦連接被關閉遠程過程被認爲是失敗的,因此終止。

我建議你採用不同的方法,嘗試實施客戶端 - 服務器請求響應類型的通信,這似乎更適合您正在描述的情況,但如果您要聲明您的情況使用服務器可以提供更好的幫助。

0

解決方案可以使用OperationContractAttribute中的IsOneWay屬性。