【问题标题】:WebClient.DownloadFileAsync() does not download files correctly on slow networkWebClient.DownloadFileAsync() 在慢速网络上无法正确下载文件
【发布时间】:2013-03-19 20:43:47
【问题描述】:

我的应用程序用于下载文件。下载文件后,会将这些文件的大小与 XML 文件中的元素进行比较以进行验证。 XML 文件为每个文件都有一个元素,该元素具有“大小”属性。这是下载文件的大小。这些文件在正常的以太网连接上验证良好。当使用慢速无线连接时,文件总是无法通过验证,这意味着下载的文件不是应有的大小。为什么 WebClient DownloadFileAsync() 方法无法在缓慢或不稳定的网络上成功下载文件?除了一遍又一遍地重试,还有什么办法吗?

foreach (var file in fileList.OrderBy(x => x.Name))
{
    var client = new WebClient();
    client.DownloadFileCompleted += (o, a) => Task.Factory.StartNew(() => OnDownloadFileCompleted());
    client.DownloadFileAsync(new Uri(AppStrings.FileServer + file.Name), AppStrings.FilePath + file.Name);
    webClientList.Add(client); //used to dispose later, after all files complete.
}

【问题讨论】:

  • 你用client.DownloadFileCompleted += OnDownloadFileCompleted;试过你的代码吗?
  • @I4V 我认为事件处理程序不是问题所在。据我所知,它工作正常。问题是 .NET 框架的 WebClient.DownloadFileAsync() 方法无法从服务器正确下载字节。
  • @user1172282 我怀疑所有 MS 团队都错过了这一点。您为什么不尝试一下并确保这不是问题所在?
  • 你是什么意思从服务器错误地下载字节......?在我看来,您正在请求以排序方式下载该文件,因为您在 foreach 中进行排序,您正在执行“OnDownloadFileCompleted()”,但就像有人提到的那样,而不是说您认为问题不是问题,为什么不尝试呢?验证client.DownloadFileCompleted += OnDownloadFileCompleted();
  • @DJKRAZE 我的意思是从服务器下载的数据(包含在下载的文件中)与文件应该包含的数据不匹配。

标签: c# download webclient downloadfileasync


【解决方案1】:

您试图一次下载太多文件。尝试分批下载。 AsyncDownloadCompleted Event 对象上还有一个错误属性,它会告诉您异常是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多