2012-02-04 60 views
2

我正在開發一個WPF下載管理器,它應該支持通過HTTP同時下載多個文件,添加新的下載,暫停/恢復,顯示和更新每個下載過程信息(文件名,大小,下載百分比,剩下的時間......)在一個DataGrid中,顯示ProgressBar和一堆其他東西的進度。C多線程下載器#

因此,這個想法是爲每個下載過程使用一個單獨的線程,並且能夠動態地創建/取消線程。什麼是完成這個最好的方法?使用BackgroundWorker,ThreadPool?

+0

您可能還需要多個線程爲每個下載過程 – 2012-02-04 21:57:47

回答

0

我只是直接使用Thread並保留對所創建的所有步驟的引用。

6

WebClient XXXAsync方法(例如DownloadFileAsync)已經爲您提供了允許您在單獨的線程上執行HTTP請求的所有方法的異步版本。它們也是C#5.0異步準備就緒。

由於這是一個WPF應用程序,因此應該確保您僅使用Dispatcher.BeginInvoke方法修改主UI線程上的UI控件。

+0

是的,以及我不能使用WebClient,因爲它不支持暫停/恢復下載,所以我必須爲HttpWebRequest創建一個自定義包裝。我想我將不得不爲每個進程使用一個新的'Thread'並將其設置爲後臺線程。 – marko 2012-02-05 22:44:39