我正在使用C#Webclient下载图像,但是有一个问题,因为该图像为0 kb。
在此过程中我没有收到错误消息。
有人可以帮我吗?
谢谢
private static void Download(string _caminhoArquivo, string _nomeArquivo)
{
try
{
using (WebClient client = new WebClient())
{
string _arquivodownl = "C:\\Img\\ImagensMensagens\\" + _nomeArquivo;
string url = "https://p2.trrsf.com/image/fget/cf/940/0/images.terra.com/2020/10/16/2020-10-16T140412Z_1_LYNXMPEG9F1AV_RTROPTP_4_BRAZIL-POLITICS.JPG";
client.DownloadFileAsync(new Uri(url), _arquivodownl);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
答案 0 :(得分:1)
您正在调用DownloadFileAsync
,这是一种非阻塞方法,这意味着它将在完全下载文件之前 完成。
您有两个选择:
1-将代码更改为同步:
client.DownloadFile(new Uri(url), _arquivodownl);
通过这种方式,该功能将在下载文件后完成。
2-钩住DownloadFileCompleted
事件:
client.DownloadFileCompleted += (o, e) => { /* Process here the file */ }
client.DownloadFileAsync(new Uri(url), _arquivodownl);
文件下载完成后,这将引发事件DownloadFileCompleted
。您可以将事件连接到函数,我仅以示例将其连接到lambda。另外,您应该检查e.Cancelled
和e.Error
,以确保下载成功。
第二种方法的好处是不会阻止您的应用程序等待下载结束。
此外,如果您使用第二种方法,则必须删除using
,否则您将在文件下载之前处理WebClient
。