WebClient 没有下载完整文件?
WebClient not downloading full file?
我有一个 WebClient
下载 .chm 文件(如下面的代码所示)。下载的内容似乎很不规则。完整文件大小约为 2500-2600 KB,但大约 50-75% 的时间我得到的文件较小(一些示例:1233 KB、657 KB、353 KB、1745 KB 等)。
(代码已删除 simplified/personal 详细信息)
public static void DownloadMyFile(string destFileAndPath)
{
//Get base for help Url, stop at first "/" ignoring "https://", then add path in server
string Url = "https://mywebservice.com/myFile.chm";
using (var client = new WebClient())
{
//I need to do stuff to the downloaded file when done
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri(Url), destFileAndPath);
//More waiting?
while (client.IsBusy) { }
}
}
还有事件,它工作正常,但在 "unfinished" 文件上:
public static void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
//Do stuff like comparing the file to another, renaming, copying, etc.
}
我真的错过了什么吗?
看起来 Paul Roub 的评论让我找到了正确的解决方案。我只是检查 e.Cancelled
属性.
偶尔会抛出异常(主要是某种 WebException
),导致下载出错。一旦我检查了 e.Error
属性,我就能够根据我的情况重试或处理失败。
我有一个 WebClient
下载 .chm 文件(如下面的代码所示)。下载的内容似乎很不规则。完整文件大小约为 2500-2600 KB,但大约 50-75% 的时间我得到的文件较小(一些示例:1233 KB、657 KB、353 KB、1745 KB 等)。
(代码已删除 simplified/personal 详细信息)
public static void DownloadMyFile(string destFileAndPath)
{
//Get base for help Url, stop at first "/" ignoring "https://", then add path in server
string Url = "https://mywebservice.com/myFile.chm";
using (var client = new WebClient())
{
//I need to do stuff to the downloaded file when done
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri(Url), destFileAndPath);
//More waiting?
while (client.IsBusy) { }
}
}
还有事件,它工作正常,但在 "unfinished" 文件上:
public static void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
//Do stuff like comparing the file to another, renaming, copying, etc.
}
我真的错过了什么吗?
看起来 Paul Roub 的评论让我找到了正确的解决方案。我只是检查 e.Cancelled
属性.
偶尔会抛出异常(主要是某种 WebException
),导致下载出错。一旦我检查了 e.Error
属性,我就能够根据我的情况重试或处理失败。