C# HttpClient在Windows Phone上缓冲响应流

C# HttpClient在Windows Phone上缓冲响应流,c#,stream,windows-runtime,windows-phone-8.1,httpclient,C#,Stream,Windows Runtime,Windows Phone 8.1,Httpclient,我正在使用最新的HttpClient(便携式)库下载文件,代码如下: var httpClient = new HttpClient(); var request = new HttpRequestMessage(method, _path); var operation = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRe

我正在使用最新的HttpClient(便携式)库下载文件,代码如下:

            var httpClient = new HttpClient();
            var request = new HttpRequestMessage(method, _path);

            var operation = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
            var stream = await operation.Content.ReadAsStreamAsync();

            do
            {
                var read = await stream.ReadAsync(buffer, 0, 4096);
                ReportProgress(...);
                (...)
            } while (...);
在Windows Phone上,ReadAsync将在返回之前下载所有内容,因此即使我将其配置为只读取下一个4096字节,它也会读取所有内容,然后才返回。这里的问题是我想报告下载进度,这种行为基本上不可能,因为它只在下载完所有内容后才报告任何内容

最奇怪的是,Windows8.1上完全相同的代码工作得很好,根本没有问题,这似乎只是WindowsPhone的问题

有什么想法吗?

我观察到了,这是

这与操作系统有关,您可能无法轻松绕过它(我曾经去过)。如果你非常需要这个,你可以试着去做


好消息是,它已在Windows 10中得到更正,您的代码应该可以正常工作。

当您要求它下载4096字节时,它下载了多少数据?您似乎忽略了读取的数据?文件的大小没有定义,在我测试的文件上,它们都大于1MB。我编辑了样本。