c# - 在下载完成或下载 1MB 之前,WinRT DownloadOperation 不会返回任何内容

标签 c# .net microsoft-metro windows-runtime windows-store-apps

我正在使用 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);

最佳答案

是的,这就是实际行为:“WinRT DownloadOperation 在下载完成或下载 1MB 之前不会返回任何内容”。
此类旨在在后台下载大文件。要下载小于 1MB 的对象,您应该使用 HttpClient 进行异步下载。

关于c# - 在下载完成或下载 1MB 之前,WinRT DownloadOperation 不会返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869308/

相关文章:

.net - 如何使用LINQ to Entity选择递归嵌套实体

c# - Metro Apps : C#, 从互联网读取文本文件

windows-8 - Windows 8 应用程序 list : Image Assets Error

c# - 字符串加密/解密密码 c# Metro Style

c# - 计时器与重复性后台 worker

c# - 是否可以约束实现接口(interface)的类的构造函数?

c# - 有没有办法将这种字符串转换为日期?

c# - 如何按顺序将项目插入列表?

c# - 如何限制对方法的访问,仅允许特定程序集访问它们?

.NET 文化变革事件?