C#中的多线程下载程序

本文关键字:下载 程序 多线程 | 更新日期: 2023-09-27 18:22:24

我正在开发一个WPF下载管理器,它应该支持通过HTTP同时下载多个文件,添加新的下载,暂停/恢复,在DataGrid中显示和更新每个下载过程信息(文件名、大小、下载百分比、剩余时间…),在ProgressBar中显示进度和其他一些东西。

因此,我们的想法是为每个下载进程使用一个单独的线程,并能够动态创建/取消线程。实现这一目标的最佳方法是什么?使用BackgroundWorker ThreadPool?

C#中的多线程下载程序

WebClient XXXAsync方法(如DownloadFileAsync)已经为您提供了所有方法的异步版本,这些方法允许您在单独的线程上执行HTTP请求。它们也C#5.0异步就绪。

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

我只需要直接使用Thread,并保留对我创建的所有踏板的引用。