我已经用 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);
}
}
我会非常感谢你的帮助,我已经花了很多时间和精力,但我还没有找到一个像样的解决方案......