BackgroundDownloader.GetCurrentDownloadsAsync returns 已完成下载

BackgroundDownloader.GetCurrentDownloadsAsync returns completed downloads

在我的 windows 商店应用程序中,我使用 BackgroundDownloader class 来处理多个后台下载。在我的 3 个下载都 100% 完成后,我关闭并打开应用程序,然后当我 运行 BackgroundDownloader.GetCurrentDownloadsAsync 时,它 return 所有下载都处于 100% 完成状态。

IReadOnlyList<DownloadOperation> readOnlyList = await BackgroundDownloader.GetCurrentDownloadsAsync();

我期望完成的下载将从列表中删除,或者我需要以某种方式强制删除它们。但是找不到它的任何功能。

如何从 CurrentDownloads 列表中删除已完成的下载?

- 附带问题:GetCurrentDownloadsAsync 会运行 return 所有活动下载(包括其他应用程序下载)还是只有下载在我的应用程序中执行?

您必须通过对刚刚完成的下载执行 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;
    // ...
}