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

情到浓时终转凉″ 提交于 2019-12-04 00:07:19

问题


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.


回答1:


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);



回答2:


One way to do this would be to use the DownloadStringAsync method on the WebClient class, and then asynchronously call the CancelAsync method after 500 milliseconds. See the remarks section here for some pointers on how to do that.

Alternatively, you could use the WebRequest class instead, which has a Timeout property. See the code example here.



来源:https://stackoverflow.com/questions/12878857/how-to-limit-the-time-downloadstringurl-allowed-by-500-milliseconds

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!