【问题标题】:WinRT DownloadOperation doesn't return anything until either the download is complete or 1MB has downloadedWinRT DownloadOperation 在下载完成或下载 1MB 之前不会返回任何内容
【发布时间】:2012-12-13 22:05:18
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢马丁。你知道这是否记录在 MSDN 上的任何地方吗?我想知道他们为什么要强加这个看似武断的限制。
    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多