所以我认为
我正试图从互联网下载一个文件,代码如下:
Webclient.DownloadFileAysnc
应该有一个默认的超时时间,但是在文档中查找时,无法找到任何关于它的信息,所以我猜测它没有默认超时时间。我正试图从互联网下载一个文件,代码如下:
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += ((sender, args) =>
{
IndividualProgress = args.ProgressPercentage;
});
wc.DownloadFileCompleted += ((sender, args) =>
{
if (args.Error == null)
{
if (!args.Cancelled)
{
File.Move(filePath, Path.ChangeExtension(filePath, ".jpg"));
}
mr.Set();
}
else
{
ex = args.Error;
mr.Set();
}
});
wc.DownloadFileAsync(new Uri("MyInternetFile", filePath);
mr.WaitOne();
if (ex != null)
{
throw ex;
}
}
但是,如果我关闭WiFi(模拟Internet连接中断),我的应用程序只会暂停并停止下载,但它永远不会通过DownloadFileCompleted
方法报告该问题。
因此,我希望在我的 WebClient.DownloadFileAsync
方法上实现一个超时。这可行吗?
另外,我正在使用 .Net 4,并且不想添加对第三方库的引用,因此无法使用 Async / Await
关键字。