Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinRT DownloadOperation不支持';在下载完成或1MB下载完成之前,不要返回任何内容_C#_.net_Microsoft Metro_Windows Runtime_Windows Store Apps - Fatal编程技术网

C# WinRT DownloadOperation不支持';在下载完成或1MB下载完成之前,不要返回任何内容

C# WinRT DownloadOperation不支持';在下载完成或1MB下载完成之前,不要返回任何内容,c#,.net,microsoft-metro,windows-runtime,windows-store-apps,C#,.net,Microsoft Metro,Windows Runtime,Windows Store Apps,我正在使用WinRT BackgroundDownloader创建一个Downloader操作,然后等待它调用到目前为止下载的进度和数据。我的问题是,除非下载完成或下载了1MB的数据,否则不会调用回调。我想在那之前得到一份进度报告 是否有其他人遇到过此问题,是否有人有解决方案?我觉得可能有一个设置可以改变下载进度报告的粒度,但我就是找不到 下面是一个代码示例: using System; using System.Diagnostics; using Windows.Networking.Bac

我正在使用WinRT BackgroundDownloader创建一个Downloader操作,然后等待它调用到目前为止下载的进度和数据。我的问题是,除非下载完成或下载了1MB的数据,否则不会调用回调。我想在那之前得到一份进度报告

是否有其他人遇到过此问题,是否有人有解决方案?我觉得可能有一个设置可以改变下载进度报告的粒度,但我就是找不到

下面是一个代码示例:

using System;
using System.Diagnostics;
using Windows.Networking.BackgroundTransfer;
using Windows.Storage;

var downloader=newbackgrounddownloader();
var storageFile=await KnownFolders.PicturesLibrary.CreateFileAsync(“puppy.jpg”,CreationCollisionOption.ReplaceExisting);
var downloadUri=新Uri(“http://www.wallbest.com/wallpapers/2560x1600/puppy-eyes-beagle-www.wallbest.com.jpg");
var downloadmoperation=downloader.CreateDownload(downloadUri,storageFile);
var progress=newprogress(operation=>Debug.WriteLine(operation.progress.BytesReceived));
等待下载operation.StartAsync().AsTask(进度);

是的,这是实际行为:“WinRT DownloadOperation在下载完成或1MB下载之前不会返回任何内容”。

此类用于在后台下载大型文件。对于下载小于1MB的对象,您应该使用异步下载,使用HttpClient

谢谢Martin。你知道MSDN上有没有记录?我想知道他们为什么要强加这种看似武断的限制。
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);