C#中的多线程下载器

mar*_*rko 2 c# multithreading download-manager

我正在上应支持通过HTTP同时下载多个文件WPF下载管理器,添加新的下载,暂停/恢复,显示和更新每个下载过程的信息(文件名,大小,下载百分比,剩余时间.. .)在DataGrid中,显示ProgressBar中的进度和一堆其他内容.

因此,我们的想法是为每个下载过程使用一个单独的线程,并能够动态创建/取消线程.完成此任务的最佳方法是什么?使用BackgroundWorker,ThreadPool?

Dar*_*rov 6

Web客户端 XXXAsync方法,如DownloadFileAsync已为您提供的,让您执行单独的线程上的HTTP请求的所有方法的异步版本.它们也是C#5.0 async ready.

由于这是一个WPF应用程序,因此应确保仅使用Dispatcher.BeginInvoke方法在主UI线程上修改UI控件.