WebClient 强制超时

4
    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毫秒后并没有停止或退出。

可以通过任务超时来实现,但我不想在这里使用任务。

有其他替代方法吗?

2个回答

0

你能提供更多的信息吗?你试图从哪里下载,确定它不起作用了吗?

我尝试了你的代码,它似乎工作正常;我得到了一个System.Net.WebException "操作已超时" - 你肯定没有忽略这个异常吗?


0

你能把请求放在一个新的线程上吗?然后监听该线程,如果达到指定的超时时间,则终止该线程以取消请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接