在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..Status
为Idle
,这是合乎逻辑的,因为我尚未启动它。
但是,如果我再向前迈出一步StartAsync()
,operation.Progress.Status
现在等于Error
。我的进度处理程序永远不会被调用。
有没有办法获得有关错误的详细信息?我找不到任何告诉我下载有什么问题。
答案 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);