Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将允许的下载字符串(url)时间限制为500毫秒?_C#_Time_Limit_Downloadstring - Fatal编程技术网

C# 如何将允许的下载字符串(url)时间限制为500毫秒?

C# 如何将允许的下载字符串(url)时间限制为500毫秒?,c#,time,limit,downloadstring,C#,Time,Limit,Downloadstring,我正在编写一个程序,当textBox1发生变化时: URL = "http://example.com/something/"; URL += System.Web.HttpUtility.UrlEncode(textBox1.Text); s = new System.Net.WebClient().DownloadString(URL); 我想将下载字符串(URL)的时间限制为500毫秒。如果超过,则取消它。一种方法是在WebClient类上使用DownloadStringAsync方法,

我正在编写一个程序,当textBox1发生变化时:

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

我想将下载字符串(URL)的时间限制为500毫秒。如果超过,则取消它。

一种方法是在WebClient类上使用DownloadStringAsync方法,然后在500毫秒后异步调用CancelAsync方法。有关如何做到这一点的一些提示,请参见备注部分


或者,您可以使用WebRequest类,该类具有Timeout属性。请参阅代码示例。

没有此类属性,但您可以轻松地扩展
WebClient


有一个流行的汇率网站出现问题,该网站允许conneciton,但他们的API没有发送响应-这个小金块是理想的补丁,非常感谢。现在我再看一遍,学到了足够多的知识,知道你的答案直接回答我的问题。根据你的答案改变。
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);