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;
// ...
}
在我的 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;
// ...
}