2013-05-12 27 views
0

我有一個WCF服務,它調用4個soap web服務(對於4個服務的總響應時間超過一分鐘),最後它會將事務狀態記錄在SQL 2008數據庫中。我第一次使用後臺工作,它工作正常,直到30個電話,如果我們增加音量超過30個電話然後Backgroundworker進程取消。現在我正在考慮使用多線程。可以給我一些建議,這是針對我的情況的最好的asnyc方法。從REST服務到外部soap web服務進行多個asyn調用的最佳方式

+0

沒有代碼示例,就無法回答。當你使用'BackgroundWorker'時你正在使用多線程,並且沒有理由限制它的30個實例。在你改變設計之前,我會先確定你沒有錯誤。 – jugg1es 2013-05-12 05:15:34

+0

我沒有任何錯誤,但是當通話次數增加到30以上時,就會出現問題。有時它只處理60個呼叫中的36個呼叫,有時它處理來自相同60個呼叫的47個呼叫。 – 2013-05-13 19:03:52

回答

1

當你有這麼多的併發操作時,切換到異步IO是有意義的。有多種型號可供選擇。最好的與TPL結合顯然是異步等待。我鼓勵你看看它。

BackgroundWorker給你帶來麻煩的原因是因爲同步IO使用線程,並且經常會遇到一些非確定性限制。

在任何情況下,拋棄基於線程的解決方案,因爲它們在高並行性方面有困難。