如何限制允许的DownloadString(url)时间为500毫秒?

Tuy*_*ham 16 c# time limit downloadstring

我正在写一个程序,当textBox1改变时:

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

我想限制允许的DownloadString(URL)时间为500毫秒.如果超过,取消它.

byt*_*ter 31

没有这样的属性,但您可以轻松扩展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);
Run Code Online (Sandbox Code Playgroud)


Ste*_*ett 7

一种方法是在WebClient类上使用DownloadStringAsync方法,然后在500毫秒后异步调用CancelAsync方法.请参阅此处的备注部分,以获取有关如何执行此操作的一些建议.

或者,您可以使用WebRequest类,它具有Timeout属性.请参阅此处的代码示例.