我正在做一些HTTP頭測試來檢查url是否存在。我使用隨機生成的字符串網址通過調用HttpRequest函數的while循環執行此操作。問題是,只要HttpWebRequest是異步,while循環一直運行着大量的進程同時檢查很多鏈接的地獄。所以我想要做的就是延遲while循環幾秒/毫秒,或者等待HttpWebRequest一次只處理3個請求。我只是迷失在這裏,我不知道如何去做。延遲while循環在c中執行HttpRequest#
我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;
}
}
我希望有人比我更方式有聰明的解決方案。 謝謝大多 喬納斯
任何你沒有使用[WebClient Class](http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx)的理由? – dtb 2012-02-19 10:55:23
我真的不知道那個班。我只需要檢查鏈接是否存在或返回403或類似的東西。 web客戶端可以這樣做嗎? – 2012-02-19 11:03:12
您發佈的代碼是單一的,但不是異步。你是說你想使用BeginGetResponse()?此方法確實有異步回調,您可以使用它來增加計數器。然後在執行下一個請求之前檢查計數器。 – AaronHS 2012-02-19 12:59:43