如何在HttpWebResponse C#Windows窗体中设置超时

时间:2016-06-13 08:25:08

标签: c# winforms http

目前我有这段代码:

    public bool checkIfDown(string URL)
    {
        try
        {
            //Creating the HttpWebRequest
            HttpWebRequest request = WebRequest.Create("http://www." + URL) as HttpWebRequest;
            //Setting the Request method HEAD, you can also use GET too.
            request.Method = "HEAD";
            request.Timeout = 1000;
            //Getting the Web Response.
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //Returns TRUE if the Status code == 200                
            return (response.StatusCode == HttpStatusCode.OK);
        }
        catch
        {
            //Any exception will returns false.
            return false;
        }
    }

检查域是向上/向下,但我的问题是响应通常需要超过10秒才能进入catch部分。

例如,我的string domain是sample123121212.com,该函数应该返回false但是花费的时间超过10秒。

我想要的是在至少2秒的短时间内返回false,因为我需要处理至少 100 domains

有关如何执行此操作的任何建议吗?

2 个答案:

答案 0 :(得分:1)

根据this回答,将属性Proxy设置为null可以显着缩短响应时间。

尝试以下方法:

request.Proxy = null;

在致电GetResponse()

之前

此外,您可以将属性ReadWriteTimeout设置为特定值(2000毫秒?),以确保您可以限制读取和写入流所需的时间。

答案 1 :(得分:0)

我使用的方法来自{{3}}。

update myTable
    set var1 = var2
    where exists (select 1
                  from (select value1, value2, var1, var2, 
                               ROW_NUMBER() OVER (PARTITION BY value1 ORDER BY value1 desc) as rn
                       from mytable 
                       where var1 is null
                      ) x
                  where mytable.value1 in (x.value1, x.value2, x.var1, x.var2) and
                        rn <= 10
                 );