public class MyWebClient : WebClient {
private int timeout;
public int Timeout
{
get
{
return timeout;
}
set
{
timeout = value;
}
}
public MyWebClient()
{
this.timeout = 5000;
}
public MyWebClient(int timeout)
{
this.timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
var result = base.GetWebRequest(address);
result.Timeout = this.timeout;
return result;
}
}
我试图将超时强制为5000毫秒,但它不起作用,下载不会停止或在5000毫秒后退出。
可以通过任务超时来完成,但我不想在这里使用任务。
任何替代方法吗?
答案 0 :(得分:0)
您能提供更多信息吗?你想从中下载什么,你确定它不起作用吗?
我已经尝试了你的代码,它似乎工作正常;我得到一个System.Net.WebException“操作已经超时” - 你绝对不会吞下这个例外吗?
答案 1 :(得分:0)
您可以将请求放在新线程上,然后观察该线程,如果您达到指定的超时,则终止线程,从而中止请求。