如何获取有关后台下载失败原因的信息?

时间:2015-08-11 18:36:00

标签: windows-runtime downloading

在WinRT中,我试图产生一个背景下载,似乎正撞在墙上。我有以下代码:

                var downloader = new BackgroundDownloader();
                var operation = downloader.CreateDownload(new Uri(rendition.Url), resultingFile);

                var downloadTask = operation.StartAsync().AsTask(new Progress<DownloadOperation>(ProgressHandler));

逐步执行代码,当我致电CreateDownload()时,生成的operation.Progres..StatusIdle,这是合乎逻辑的,因为我尚未启动它。

但是,如果我再向前迈出一步StartAsync()operation.Progress.Status现在等于Error。我的进度处理程序永远不会被调用。

有没有办法获得有关错误的详细信息?我找不到任何告诉我下载有什么问题。

1 个答案:

答案 0 :(得分:1)

首先,我看不出你已经分配了

resultingFile

我用

StorageFile file = /* Instantiate */;

我正在创建多个任务,因为需要下载许多文件。

然后我这样做,现在提到你的代码

 //List to hold my tasks
 List<Task> dloadTasks = new List<Task>();

 //SET callback
 Progress<DownloadOperation> progressCallback = new Progress<DownloadOperation>(DownloadProgress);
 //YOUR CODE!
 var downloader = new BackgroundDownloader();
 var operation = downloader.CreateDownload(new Uri(rendition.Url),   resultingFile);

 //Your code modified a bit
 var yourResult = await operation.StartAsync().AsTask(progressCallback);


 //This is where my way changes from your way
 Task downloadCompletionTask = HandleDownloadAsync(operation , true);

 //Add to list with tasks
 dloadTasks.Add(downloadCompletionTask);

 //Then i Await them
 await Task.WhenAll(downloadCompletionTasks);