Windows 8 如果下载Operation.Progress.Status PausedNoNetwork,则在backgrounddownloader中自动暂停/恢复

Windows 8 如果下载Operation.Progress.Status PausedNoNetwork,则在backgrounddownloader中自动暂停/恢复,windows-8,windows-runtime,windows-store-apps,download,Windows 8,Windows Runtime,Windows Store Apps,Download,如果网络连接中断,如何使用Windows.Networking.BackgroundTransfer.BackgroundDownloader自动暂停/恢复下载大文件 我正在尝试使用Windows BackgroundDownloader下载大文件: var userFolder = await GetUserFolder(); var file = await userFolder.CreateFileAsync("BigFile.iso", CreationCollisionOption.G

如果网络连接中断,如何使用Windows.Networking.BackgroundTransfer.BackgroundDownloader自动暂停/恢复下载大文件

我正在尝试使用Windows BackgroundDownloader下载大文件:

var userFolder = await GetUserFolder();
var file = await userFolder.CreateFileAsync("BigFile.iso", CreationCollisionOption.GenerateUniqueName);

var backgroundDownloader = new BackgroundDownloader();
_downloadOperation = backgroundDownloader.CreateDownload(new Uri("http://mirrors.melbourne.co.uk/ubuntu-releases//raring/ubuntu-13.04-desktop-amd64.iso"), file);

var progress = new Progress<DownloadOperation>(operation =>
                {
                    //...Error operation.Progress status if lost connection
                });                

await _downloadOperation.StartAsync().AsTask(new CancellationToken(), progress);
现在,如果我手动关闭网络适配器,我有状态为PauseNoNetwork的DownloadOperation in Progress处理程序:

然后:


据我所知,后台传输API能够自动适应连接的变化,并且在连接丢失时会暂停操作,稍后会自动恢复。它还具有在网络间漫游、选择成本模型最佳的网络等弹性

在您的情况下,我怀疑您遇到了超时,因此进度处理程序会报告错误和暂停。这里的关键是在进度处理程序中报告错误;您还应该有一个完整的处理程序来告诉您操作作为一个整体是什么时候完成的,而不仅仅是进度完成了还是失败了。也就是说,如果尚未调用已完成的处理程序,则即使进程出错,操作仍处于活动状态,并且实际上应该重新启动

请尝试检查DownloadOperation.Progress属性的值,以查看是否已重新启动