HttpClient 输出有关下载过程的信息

问题描述 投票:0回答:0

我已经用 C# 解决了一个问题三个星期了。即,不久前我在语言文档站点上注意到不建议使用 WebClient 类,最好使用 HttpClient 代替。 这是一个很好的建议,但是当我开始使用它时,我发现无法在执行过程中取得进展,即如果我下载一个文件,我将不知道下载了多少/还有可在 WebClient 中轻松获得的其他技术信息。所以问题来了。有这样一段代码,我不明白为什么 progressMessageHandler 不输出有关下载过程的信息,如果这不是获取有关下载信息的最佳方式,您对 WITHOUT WebClient 有何建议?..

string textDownloadProgress;
    private async void DownloadFileAsync()
    {
            string filename = "file.zip";
            var handler = new HttpClientHandler() { AllowAutoRedirect = true };
            var ph = new ProgressMessageHandler(handler);
            var hm = new HttpRequestMessage() { RequestUri = new Uri("URL") };
            var client = new HttpClient(ph) { Timeout = Timeout.InfiniteTimeSpan };

            var progressMessageHandler = new ProgressMessageHandler(new HttpClientHandler());
            progressMessageHandler.HttpReceiveProgress += (_, e) =>
            {
                textDownloadProgress += e.ProgressPercentage;
            };

            using (var filestream = new FileStream(filename, FileMode.Create))
            {
                var netstream = await client.GetStreamAsync(hm.RequestUri);
                await netstream.CopyToAsync(filestream);
            }
     }

我会非常感谢你的帮助,我已经花了很多时间和精力,但我还没有找到一个像样的解决方案......

c# progress-bar httpclient
© www.soinside.com 2019 - 2024. All rights reserved.