gpt4 book ai didi

c# - 如果文件超过 500mb,DownloadFileAsync 应用程序没有响应?

转载 作者:太空宇宙 更新时间:2023-11-03 15:41:07 27 4
gpt4 key购买 nike

所以我正在使用 webClient.DownloadFileAsync(url, sFilePathToWriteFileTo); 下载文件

网址是string url = "http://localhost/1.zip";

sFilePathToWriteFileTo 为根目录

每当我下载 500mb 的 zip 存档时,我的 label1 就会发狂并说“正在使用 INF kb/s 下载”,这就是它开始不响应和崩溃的时候

label1 是 label1.Text = string.Format("正在以 {0} kb/s 下载", (e.BytesReceived/1024d/sw.Elapsed.TotalSeconds).ToString("0.00"));

当我下载 20mb-50mb 的小文件时它工作得很好

哦顺便说一句,(我刚刚重读了我的帖子),sw 是秒表,以防你想知道

这里有什么问题,我该如何解决?

-- 编辑,添加 webClient:

using (webClient = new WebClient())
{
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(wzCompleted);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wzProgressChanged);
Uri url = new Uri(sUrlToReadFileFrom);
sw.Start();
try
{
webClient.DownloadFileAsync(url, sFilePathToWriteFileTo);
}
catch (Exception ex)
{
downloadInfo.Text = ex.Message;
}
}

wzProgressChanged:

private void wzProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
statusContent.Text = "Downloading new game files";
downloadInfo.Text = "Downloading: " + string.Format("{0} MB / {1} MB", (e.BytesReceived / 1024d / 1024d).ToString("0.00"), (e.TotalBytesToReceive / 1024d / 1024d).ToString("0.00")) + " with " + string.Format("{0} kb/s", (e.BytesReceived / 1024d / sw.Elapsed.TotalSeconds).ToString("0.00")) + " (" + e.ProgressPercentage.ToString() + "%" + ")";
progressBar1.Value = e.ProgressPercentage;
}

wz完成:它只是启用 2 个按钮并禁用另外 2 个按钮,不需要这个吗?

最佳答案

除了 dkackman 的建议之外,我还建议您对更新标签的频率有更多的选择,并可能对您的值进行一些额外的检查,以确保您不会获得 NaN/INF 行的值。参见 other posts在这里,围绕它们的确切含义。查看类似 Double.IsInfinity 的方法帮助您确定您的计算结果是否是可以显示的数字。

此外,在字符串格式语句之外进行一些计算,并根据您的发现,您可以决定向用户提供哪些信息。

关于c# - 如果文件超过 500mb,DownloadFileAsync 应用程序没有响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com