【发布时间】: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