2015-11-05 52 views
1

我使用的是最新的HttpClient(便携式)库,下载文件在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的唯一问题。

任何想法?

+0

当您要求下载4096字节时,下载了多少数据?看起来你忽略了读取的数据? –

+0

没有定义文件的大小,在我测试的文件中它们都大于1 MB。我编辑了样本。 – DVD

回答

1

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

这与操作系统有关,很可能你无法轻易绕过(我去过那里)。如果您非常需要此功能,则可以尝试按照@yasen's answer

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