繁体   English   中英

WebClient强制超时

[英]WebClient force Timeout

    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 milsecs后。

它可以通过任务超时完成,但我不想在这里使用任务。

任何替代方式吗?

你能提供更多信息吗? 你想从中下载什么,你确定它不起作用吗?

我已经尝试了你的代码,它似乎工作正常; 我得到一个System.Net.WebException“操作已经超时” - 你绝对不会吞下这个例外吗?

你可以把请求放在一个新的线程上,然后观察那个线程,如果你达到你指定的超时,那么杀死线程,从而中止请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM