C# HttpWebResponse-正确处理连接

C# HttpWebResponse-正确处理连接,c#,.net,httpwebrequest,httpwebresponse,C#,.net,Httpwebrequest,Httpwebresponse,我正在用C#开发一个下载管理器,我正在使用多个http请求,我想知道如何确保连接正确关闭 在响应流上调用Dispose是否足够?我也需要打电话给Close吗? 不确定哪里会出问题,但在某个时候网站会变得没有反应 谢谢 将您的HttpWebResponse包装在一个using块中: using(HttpWebResponse response = request.GetResponse()) { // do stuff here } // response object is automa

我正在用C#开发一个下载管理器,我正在使用多个http请求,我想知道如何确保连接正确关闭

在响应流上调用Dispose是否足够?我也需要打电话给Close吗? 不确定哪里会出问题,但在某个时候网站会变得没有反应


谢谢

将您的
HttpWebResponse
包装在一个using块中:

using(HttpWebResponse response = request.GetResponse())
{
    // do stuff here
} // response object is automatically disposed of here. 

正如Kyle提到的,将HttpWebResponse包装在using块中。但是,如果GetResponse()抛出异常(例如,在404响应上发生的异常),则需要在异常中获取HttpWebResponse

HttpWebResponse webResponse = null;
try {
    webResponse = (HttpWebResponse)webRequest.GetResponse();
} catch (WebException e) {
    webResponse = (HttpWebResponse)e.Response;
    if (webResponse == null) {
        // Handle this.
    }
}    
using (webResponse) {
    // Process the response.
}

我熟悉using语句,但我已经在完成后调用Dispose(),这有什么区别吗?当您像这样使用
using
时,您不必担心自己调用
Dispose
,编译器会帮您处理。