我正在C#中編寫下載程序,並停在以下問題:我應該使用什麼樣的方法來並行化我的下載並更新我的GUI?C#下載程序:我應該使用線程,BackgroundWorker還是ThreadPool?
在我第一次嘗試,我用4個線程,並在他們每個人的完成,我開始另一個問題:主要的問題是我的CPU在每一個新的線程開始進入100%。
周圍的Googling,我發現了BackgroundWorker的線程池和的存在:指出我想更新我與我下載的各個環節的進度GUI,什麼是最好的解決辦法?
1)創建4個不同的BackgroundWorker,一個代表附加到各事件ProgressChanged到功能在我的GUI來更新進度?
2)使用ThreadPool並將最大和最小線程數設置爲相同的值?
如果我選擇#2,當沒有更多的線程隊列中,它停止了4個工作線程?它會暫停嗎?由於我必須下載不同的鏈接列表(每個鏈接20個鏈接)並在完成時從一個鏈接移動到另一個鏈接,ThreadPool會在每個鏈表之間啓動和停止線程嗎?
如果我想改變帶電作業的線程數,並決定使用線程池,從10個線程變爲6,它拋出和異常並停止4周隨機的主題?
這是唯一讓我頭疼的部分。 我事先感謝你們每個人的回答。
爲什麼不使用線程池? http://msdn.microsoft。com/en-us/library/3dasc8as%28v = vs.80%29.aspx#Y23 – Stormenet