我正在开发一个WPF下载管理器,它应该支持通过HTTP同时下载多个文件,添加新的下载,暂停/恢复,在DataGrid中显示和更新每个下载过程信息(文件名、大小、下载百分比、剩余时间…),在ProgressBar中显示进度和其他一些东西。
因此,我们的想法是为每个下载进程使用一个单独的线程,并能够动态创建/取消线程。实现这一目标的最佳方法是什么?使用BackgroundWorker ThreadPool?
WebClient XXXAsync方法(如DownloadFileAsync
)已经为您提供了所有方法的异步版本,这些方法允许您在单独的线程上执行HTTP请求。它们也C#5.0异步就绪。
由于这是一个WPF应用程序,您应该确保使用Dispatcher.BeginInvoke方法仅在主UI线程上修改UI控件。
我只需要直接使用Thread
,并保留对我创建的所有踏板的引用。