我目前面臨一個奇怪的問題。我測試網站的響應時間,但是當該方法在第三時間循環(定時的連接)它掛起:程序在第三次迭代時掛起(HTTPWebRequest)C#
internal class Program
{
Console.ReadLine();
loop();
}
}
它掛起之前的輸出是:「HTTP響應定時器」,所以我假定這與正在運行的實例有關。
我目前面臨一個奇怪的問題。我測試網站的響應時間,但是當該方法在第三時間循環(定時的連接)它掛起:程序在第三次迭代時掛起(HTTPWebRequest)C#
internal class Program
{
Console.ReadLine();
loop();
}
}
它掛起之前的輸出是:「HTTP響應定時器」,所以我假定這與正在運行的實例有關。
您必須關閉響應。否則,你會達到最大的開放連接。
使用using語句,這是最簡單的方法來關閉和處置的響應:
using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()){
// .. here some action if any
}
你不處置的響應,這意味着它掛到從之前的請求的連接。然後,新的要求正在等待從池中獲取連接,並阻止由於舊響應仍然是「擁有」的連接只需更改您的代碼:
// You weren't really using the HttpWebResponse class anyway, so why cast?
using (var response = request.GetResponse())
{
}
你真的意味着雖然遞歸?你爲什麼不循環使用:
while(true)
{
GetResponse();
}
或類似的東西?
考慮爲你的循環使用'for'語句,否則如果循環次數足夠多,你最終會得到一個'StackOverflowException'。你正在遞歸地調用你的函數。 –