在我的Windows商店应用程序中,我使用BackgroundDownloader类来处理多个后台下载。在我的所有3次下载完成后,我关闭并打开应用程序,然后当我运行BackgroundDownloader.GetCurrentDownloadsAsync时,它返回100%完成状态的所有下载。
IReadOnlyList<DownloadOperation> readOnlyList = await BackgroundDownloader.GetCurrentDownloadsAsync();
我的期望是完成下载将从列表中删除或以某种方式我需要强制删除它们。但找不到任何功能。
如何从CurrentDownloads列表中删除已完成的下载?
- 侧面问题:GetCurrentDownloadsAsync函数是否会返回所有活动下载(包括其他应用程序下载)或仅在我的应用程序中执行下载?
答案 0 :(得分:6)
您必须通过对刚刚完成的下载执行AttachAsync()
来执行完成处理程序。之后,GetCurrentDownloadsAsync()
的结果中不会再出现下载内容。
尝试:
private async void Foo()
{
var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();
foreach (var download in downloads)
{
var task = download.AttachAsync().AsTask();
var notAwait = task.ContinueWith(OnCompleted);
}
}
private void OnCompleted(Task<DownloadOperation> task)
{
DownloadOperation download = task.Result;
// ...
}