Время ожидания WebClient - PullRequest
4 голосов
/ 25 июня 2011
    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 голосов
/ 21 сентября 2011

Не могли бы вы поместить запрос в новый поток, а затем проследить за этим потоком, если вы превысили указанное время ожидания, то уничтожите поток, тем самым прерывая запрос.

0 голосов
/ 30 июня 2011

Можете ли вы дать больше информации?Что вы пытаетесь загрузить, и уверены ли вы, что он не работает?

Я пробовал ваш код, и он, кажется, работает нормально;Я получаю System.Net.WebException «Время операции истекло» - вы определенно не проглотили это исключение?

...