BackgroundDownloader.GetCurrentDownloadsAsync返回完成的下载

Teo*_*ahi 1 c# windows-store-apps windows-phone-8.1

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

IReadOnlyList<DownloadOperation> readOnlyList = await BackgroundDownloader.GetCurrentDownloadsAsync();
Run Code Online (Sandbox Code Playgroud)

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

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

- 问题:GetCurrentDownloadsAsync函数是否会返回所有活动下载(包括其他应用程序下载)或仅在我的应用程序中执行下载?

kie*_*wic 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;
    // ...
}
Run Code Online (Sandbox Code Playgroud)