延迟while循环在c#中执行HttpRequest

时间:2012-02-19 10:53:33

标签: c# asynchronous httpwebrequest delay

我正在进行一些HTTP标头测试,以检查网址是否存在。我这样做是随机生成的字符串url通过一个调用HttpRequest函数的while循环。问题是,只要HttpWebRequest是Async,while循环就会继续运行,同时很多进程会检查很多链接。所以我想做的是将while循环延迟几秒/毫秒,或者只是等待HttpWebRequest一次只处理3个请求。我刚刚迷失在这里,我不知道该怎么做。

我的while循环看起来像这样

 String Episode = textBox1.Text;
            String Rand = newInt(16);
            String Url = "http://someurl.com?_" + Episode + "paradisehotel_" + Rand + ".wmv";

            while (checkUrl(Url) == false)
            {
                Rand = newInt(16);
                while (isInList(Rand, list))
                {
                    Rand = newInt(16);
                }

                list.Add(Rand);

                Url = "someurl.com_" + Episode + "paradisehotel_" + Rand + ".wmv";
            }

我的CheckUrl函数看起来像这样

private bool checkUrl(String url)
{

    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(@url);
    req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
    try
    {
        WebResponse response = req.GetResponse();
        return true;
    }
    catch (WebException ex)
    {
        Console.WriteLine(ex.Message);
        return false;
    }

}

我希望有人比我更聪明有一个解决方案。 非常感谢你 纳斯

1 个答案:

答案 0 :(得分:1)

在加载响应之后,使用示例here(太多代码将其复制并粘贴到此处),它使用异步回调,并在回调内增加静态计数器。然后,您需要做的就是在执行下一个请求之前,通过使用thread.sleep检查计数器在while循环的每次迭代中是否超过最大值。