我正在使用WinRT BackgroundDownloader创建一个DownloadOperation,然后等待它回调到目前为止已下载的进度和数据。我的问题是,除非下载完成或者已经下载了1MB的数据,否则不会调用回调。我希望早点得到一份进度报告。
是否有其他人遇到此问题,是否有人有解决方案?我觉得可能有一个设置可以改变下载进度报告的粒度,但我无法在任何地方找到它。
以下是代码示例:
using System;
using System.Diagnostics;
using Windows.Networking.BackgroundTransfer;
using Windows.Storage;
...
var downloader = new BackgroundDownloader();
var storageFile = await KnownFolders.PicturesLibrary.CreateFileAsync("puppy.jpg", CreationCollisionOption.ReplaceExisting);
var downloadUri = new Uri("http://www.wallbest.com/wallpapers/2560x1600/puppy-eyes-beagle-www.wallbest.com.jpg");
var downloadOperation = downloader.CreateDownload(downloadUri, storageFile);
var progress = new Progress<DownloadOperation>(operation => Debug.WriteLine(operation.Progress.BytesReceived));
await downloadOperation.StartAsync().AsTask(progress);
答案 0 :(得分:3)
是的,这是实际行为:“ WinRT DownloadOperation在下载完成或下载1MB 之前不会返回任何内容。”
此类用于用于在后台下载大型文件。要下载小于1MB的对象,您应该使用 HttpClient 进行异步下载。