C# 程序在第三次迭代(HTTPWebRequest)时挂起#

C# 程序在第三次迭代(HTTPWebRequest)时挂起#,c#,.net,windows,C#,.net,Windows,我现在面临一个奇怪的问题。我正在测试网站响应时间,但当该方法在第三次循环(连接计时)时,它会挂起: internal class Program { Console.ReadLine(); loop(); } } 挂起之前的输出是:“HTTP响应计时器”,因此我假设这与正在运行的实例有关。您必须关闭响应。否则,您将达到最大打开连接数 使用using语句,这是关闭和处理响应的最简单方法: using(HttpWebResponse response =

我现在面临一个奇怪的问题。我正在测试网站响应时间,但当该方法在第三次循环(连接计时)时,它会挂起:

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
。您正在递归调用您的函数。