2011-04-25 13 views
5

Estoy trabajando en un administrador de descargas en C# y estoy haciendo uso de múltiples solicitudes http y me preguntaba ¿cómo puedo asegurarme de que una conexión se cerró correctamente?HttpWebResponse - eliminación de una conexión correctamente

¿Es suficiente llamar a Dispose en el flujo de respuesta? ¿Debo llamar también a Close? No estoy seguro de qué cosas podrían salir mal, pero en algún momento un sitio web dejará de responder.

Gracias!

Respuesta

9

Envuelva su HttpWebResponse en un bloque usando:

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

Estoy familiarizado con la instrucción de uso pero ya estoy llamando a Dispose() cuando haya terminado, ¿hay alguna diferencia? – Meniya

+0

Cuando usa 'using' de esta manera, no necesita preocuparse de llamar' Dispose', el compilador se encarga de eso. –

0

Como se mencionó Kyle, envuelva su HttpWebResponse en un bloque usando. Pero si GetResponse() arroja una excepción (que ocurre en una respuesta 404, por ejemplo), debe tomar HttpWebResponse en la excepción.

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. 
} 
Cuestiones relacionadas