C# WebClient未报告0Kb文件
我正在编写一个应用程序,从我们的服务器下载.xml文件,并从中检索一些数据 该文件是我们部门使用的零件的数据 有些文件是0Kb,这意味着我们没有这部分的数据 现在我的问题是Webclient DownloadFileCompleted事件在完成下载0Kb文件时没有触发 这是我的密码:C# WebClient未报告0Kb文件,c#,wpf,C#,Wpf,我正在编写一个应用程序,从我们的服务器下载.xml文件,并从中检索一些数据 该文件是我们部门使用的零件的数据 有些文件是0Kb,这意味着我们没有这部分的数据 现在我的问题是Webclient DownloadFileCompleted事件在完成下载0Kb文件时没有触发 这是我的密码: private void Get_Tool_Model() { if (System.Net.NetworkInformation.NetworkInterface.GetIsNet
private void Get_Tool_Model()
{
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
download_Tool_Model = true;
using (WebClient wc = new WebClient())
{
wc.UseDefaultCredentials = true;
wc.DownloadProgressChanged += (o, e) =>
{
double bytesIn = double.Parse(e.BytesReceived.ToString());
double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
double percentage = bytesIn / totalBytes * 100;
Dispatcher.Invoke(() => {
txt_progress.Text = "Downloaded " + e.BytesReceived + " of " + e.TotalBytesToReceive;
progress.Value = e.ProgressPercentage;
});
};
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(Wc_DownloadFileCompleted);
wc.DownloadFileAsync(
// Param1 = Link of file
new System.Uri(path),
// Param2 = Path to save
"C:\\Tool_Model.xml"
);
}
}
}
private void Wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
download_completed = true;
}
谢谢您的帮助。当存在0kb文件时,Web服务器返回什么?(如200、204或404)?可能是以不同方式处理0kb文件的更好方法,因为不需要下载它们(在这种情况下,下载可能永远不会“完成”)。是否下载文件并保存到磁盘?乍一看,您的代码与下面的代码非常相似:在这种情况下,如果downloadcompleted没有启动,请标记并检查文件是否在磁盘上。@Stefan-我正在清理它们,问题是我无法下载、验证和删除它们,每次文件被使用时,我都会收到。@Andy-是的,文件正在保存到磁盘。我找到了一个解决方案,可以在不出现Webclient DownloadFileCompleted事件的情况下增加进度条。