2011-04-07 60 views
0

我正在構建一個需要通過Web訪問/更新多個資源的小型WP7應用程序。我正在尋找建立一個PriorityThreadPool對象與一些取消功能,以幫助我在後臺的幾個線程上運行「行動」。那麼自定義事件優先下載用戶所看到的然後下載剩下的,但如果用戶更新可視化然後改變優先級並使那些項目出現在池的專用列表上。WP7 vs PriorityThreadPool和網絡操作

假設我正在實施一項負責從Web服務器下載圖像的操作,您會嘗試使Async呼叫同步,還是將其保留原樣,請考慮我可能會執行100次操作下載100個不同的圖像。也許如果我不讓電話同步這將是很難取消一個行動,因爲他們將在線程池中運行得非常快。我想在底層有一些WP7網絡連接線程池

任何意見或建議。

回答

0

而不是嘗試和(重新)創建一個「PriorityThreadPool」我會創建一個對象,管理多個隊列,您可以根據需要調整優先級。
這可以根據優先級來處理每個隊列。
處理隊列時,一次只發出幾個請求,一個完成後再開始下一個請求。

如果您希望更好地控制取消請求,您可以在ThreadPool上執行處理或創建BackgroundWorker。

在每個請求中,您可能希望將其作爲同步操作來處理,因爲它會使邏輯更簡單,但會取消更難的事情。

+0

我的主要關注點並不在於找到實現該策略的有效且簡單的方法(PriorityQueue或PriorityThreadPool)。但更多關於網絡堆棧如何工作,因爲MS作出決定使網絡API使用某種異步約定調用,這對於不凍結UI而言有幫助,但是當它將這些調用變爲線程或線程池時它使事情更復雜一點。 – 2011-04-07 20:25:12

+0

能夠理解網絡堆棧如何在底層工作也可能有助於定義可以在後臺同時運行多少個網絡操作以及如何管理該類操作的優先級。 – 2011-04-07 20:26:08