2010-07-07 70 views
5

我一直在試圖弄清楚如何使用System.Threading.Tasks異步調用同步WCF方法,同時支持取消,錯誤處理,結果返回和多個延續。需要全面的C#System.Threading.Tasks示例

我遇到了一些不完整的演示,但他們似乎都下跌有點短。作爲一個例子,我不能使用協作式取消,因爲我的所有WCF方法都是原子化的並且相對較長。

+1

任務需要在目標代碼(自定義或其他)中啓用異步支持才能啓用所有這些功能 - 尤其是取消功能。你可以用異步方法創建一個同步方法,但是如果不修改(可能重構)代碼,你不能以相反的方式來完成。 – 2011-09-04 22:22:47

回答

1

我會考慮的備用選項 - 生成異步方法WCF客戶端界面。這將允許您以異步方式(從客戶端應用程序的角度)進行所有WCF服務調用,這將允許您支持取消,錯誤處理,結果返回等。

好處是,不要在工作線程池中阻塞一個線程(就像System.Threading.Tasks一樣),並且您不必擔心如何在工作線程中取消同步WCF調用。

是否有一個原因,你必須做一個同步調用WCF?

+0

感謝您的快速回復。不幸的是,我使用自定義代理,所以我不能使用本地WCF異步... – 2010-07-08 02:21:01

1

如果你解釋了你做了多一點,它可能會有所幫助。

但是你似乎在說你想要一個syncronous調用的異步版本,這是不是任務是什麼。

基於任務處理的目的是使一個異步調用看起來像一個syncronous電話。不像它只是代碼看起來像它的工作方式。