win8 metro HttpClient 다운로드 파일 - 진행률 막대

HttpClient에서 파일을 직접 다운로드합니다. 만약 파일이 비교적 크면 진도 표시가 없으면 매우 불친절합니다.
모든 것은 다운로드할 때 일부분을 다운로드하고 싶으면 진도를 표시하세요.
코드의 중점은
HttpCompletionOption.ResponseHeadersRead
ReadAsStreamAsync

디스포즈에 대해서도 using을 사용할 수 있습니다.
var saveFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename,
                        CreationCollisionOption.ReplaceExisting);
                    var fs = await saveFile.OpenAsync(FileAccessMode.ReadWrite);
                    HttpClientHandler handler = new HttpClientHandler();
                    handler.ClientCertificateOptions = ClientCertificateOption.Automatic;
                    HttpClient hc = new HttpClient(handler);
                    HttpResponseMessage response = await hc.GetAsync(DownUrl, HttpCompletionOption.ResponseHeadersRead);
                    Stream stream = await response.Content.ReadAsStreamAsync();
                    IInputStream inputStream = stream.AsInputStream();
                    ulong totalBytesRead = 0;
                    while (true)
                    {
                        // Read from the web.
                        IBuffer buffer = new Buffer(1024);
                        buffer = await inputStream.ReadAsync(
                            buffer,
                            buffer.Capacity,
                            InputStreamOptions.None);

                        if (buffer.Length == 0)
                        {
                            //   
                            break;
                        }

                        //   
                        totalBytesRead += buffer.Length;
                        System.Diagnostics.Debug.WriteLine("Bytes read: {0}", totalBytesRead);

                        //    .
                        await fs.WriteAsync(buffer);
                    }
                    inputStream.Dispose();
                    fs.Dispose();

좋은 웹페이지 즐겨찾기