アプリ内で任意のファイルのダウンロード状況を提供する必要があります。 私はHttpClient.GetInputStreamAsyncの進歩を使うことができると思ったが、それは細粒ではなかった。進行通知は非常にまれです。以下のコード:WindowsストアアプリHttpClientの進捗状況
var httpClient = new HttpClient();
var path = new Uri(@"http://<path>");
using (var inputStream = (await httpClient.GetInputStreamAsync(path).AsTask(new MyProgress())).AsStreamForRead())
{
var outputFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("output.mov", CreationCollisionOption.ReplaceExisting);
using (var outputStream = (await outputFile.OpenAsync(FileAccessMode.ReadWrite)).AsStreamForWrite())
{
await inputStream.CopyToAsync(outputStream);
await outputStream.FlushAsync();
}
}
Debug.WriteLine("done");
private class MyProgress : IProgress<HttpProgress>
{
public void Report(HttpProgress value)
{
Debug.WriteLine("HTTP {0} progress {1}/{2}", value.Stage, value.BytesReceived, value.TotalBytesToReceive);
}
}
出力:
HTTP ResolvingName progress 0/
HTTP ConnectingToServer progress 0/
HTTP SendingHeaders progress 0/
HTTP WaitingForResponse progress 0/
HTTP ReceivingHeaders progress 0/
HTTP ReceivingContent progress 0/109192147
done
ので、時間のある時点での総バイト数を受け取るためには、知られているが、何の進展は、ファイルのダウンロード中に報告されていません。
それは、進捗状況を報告し、しかしそれはまた、あるメモリにすべてのコンテンツをロード私が避けたいもの。遅く答えて申し訳ありません、忙しかったです。 – aguyngueran