2011-11-08 26 views
2

我被要求使用一個API來調用幕後的服務器的http調用。是否有包裝同步API將方法公開爲異步的模式?

不幸的是,所有的呼叫都是同步的。我想在這個API中包裝類,以便我可以進行異步調用,並具有取消調用的功能。

發佈公開此API的WCF服務會違反許可協議。

有沒有這樣做的模式?

+1

同步或異步的API應該是純粹的客戶端決策,而不是服務中固有的。 – CodesInChaos

+0

如果您所調用的API是同步的,那麼您無法做任何事情來製作異步。您可以使_appear_變爲異步(通過將它們包裝到任務中,或者只是簡單地使用線程),但是在一天結束時,哪個線程調用該API將被阻塞,等待響應。 – BFree

回答

2

您可以隨時在Task.Factory.StartNew的新線程中啓動一個新任務。如果您在非線程池線程上需要競爭通知,我建議使用SynchronizationContext將其安排到不同的線程。