Search code examples
c#timelimitdownloadstring

How to limit the time DownloadString(url) allowed by 500 milliseconds?


I'm writing a program that when textBox1 change:

URL = "http://example.com/something/";
URL += System.Web.HttpUtility.UrlEncode(textBox1.Text);
s = new System.Net.WebClient().DownloadString(URL);

I want limit the time DownloadString(URL) allowed by 500 milliseconds. If more than, cancel it.


Solution

  • There is no such property, but you can easily extend the WebClient:

    public class TimedWebClient: WebClient
    {
        // Timeout in milliseconds, default = 600,000 msec
        public int Timeout { get; set; }
    
        public TimedWebClient()
        {
            this.Timeout = 600000; 
        }
    
        protected override WebRequest GetWebRequest(Uri address)
        {
            var objWebRequest= base.GetWebRequest(address);
            objWebRequest.Timeout = this.Timeout;
            return objWebRequest;
        }
    }
    
    // use
    string s = new TimedWebClient {Timeout = 500}.DownloadString(URL);