2015-11-05 45 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中得到糾正,您的代碼應該可以正常工作。