繁体   English   中英

HttpClient在Windows Phone上缓冲响应流

[英]HttpClient buffers response stream on Windows Phone

我正在使用最新的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字节,它也会读取所有内容,然后返回。 这里的问题是我想报告下载进度,这种行为基本上使它变得不可能,因为它仅在下载所有内容后报告任何内容。

最奇怪的是,Windows 8.1上完全相同的代码可以很好地工作,而没有任何问题,它似乎是Windows Phone的唯一问题。

有任何想法吗?

我之前观察到类似的事情 ,这也与之有关

这与操作系统有关,可能您将无法轻松绕过它(我去过那里)。 如果您非常需要这样做 ,则可以尝试遵循@yasen的回答

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM