我有一个应用程序,用户可以下载一些文件,这些文件也可以通过推送通知触发的BackgroundTask下载。
当应用程序未运行且我收到推送通知时,BackgroundTask开始下载该文件。如果我启动应用程序并且文件仍在下载,我希望看到它的进展。
我可以获取所有下载文件BackgroundDownloader.GetCurrentDownloadsAsync()
。
如果我有DownloadOperation
的列表,我能否以某种方式检查每项操作的当前进度?我的意思是,如果我可以将一些IProgress<T>
方法附加到已经运行的下载操作。
或者,有没有其他方法可以检查在BackgroundTask中开始的DownloadOperation
的进度?
更新
如果我需要查看下载文件的进度,我可以使用这种方法:
await downloadOperation.StartAsync().AsTask(token, new Progress<DownloadOperation>(...));
但是,如果我只有DownloadOperation
的实例已经下载了文件,我该如何检查操作的进度并通知视图有关进度的信息? Progress
属性有当前进度,但没有任何&#34;进展已更改事件&#34;或类似的东西。
答案 0 :(得分:0)
如果您已经在其他位置启动了 DownloadOperation (在之前的应用运行,后台任务中),那么您应该 Attach 。因此,我认为,在获得下载列表后,您应该能够以类似于已经开始的方式附加到它们:
var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();
foreach(var operation in downloads)
await operation.AttachAsync().AsTask(token, new Progress<DownloadOperation>(...)); // of course for each operation there will be some changes
答案 1 :(得分:0)
处理ProgressChanged
课程的Progress<T>
事件。
var progress = new Progress<DownloadOperation>();
progress.ProgressChanged += ProgressOnProgressChanged;
private void ProgressOnProgressChanged(object sender, string s)
{
// your logic here
}