首页 文章

HttpClient缓冲Windows Phone上的响应流

提问于
浏览
1

我正在使用最新的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问题 .

有任何想法吗?

1 回答

  • 1

    我观察到similar thing a while ago,这是also related .

    这与操作系统有关,可能你赢了_110397 . 如果你强烈需要这个,你可以尝试遵循@yasen's answer .

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

相关问题