我读了WebClient不支持超时,但我觉得奇怪。我的WebClient类:WebClient超时问题
class MyWebClient : WebClient
{
private int timeout;
public int Timeout
{
get { return timeout; }
set { timeout = value; }
}
public MyWebClient()
{
timeout = 5000;
}
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request.GetType() == typeof(HttpWebRequest))
{
((HttpWebRequest)request).Timeout = timeout;
}
Console.WriteLine("timeout {0}", request.Timeout);
return request;
}
}
当我提出请求,这个打印:
超时10000
当我评论
//((HttpWebRequest)request).Timeout = timeout;
它打印:
超时100000
它是确定默认值
但是当我设置:
((HttpWebRequest)request).Timeout = 5000;
它打印:
超时5000
和timouts工作
任何人能解释为什么我必须输入超时值直接?
这不是一个关于WebRequest.Timeout的问题,而是C#中继承的工作原理。 – angularsen 2011-04-14 06:34:26