Pregunta

Tengo una función en C # que obtiene el estado de Internet mediante la recuperación de un XML 64b desde la página del router

public bool isOn()
        {
            HttpWebRequest hwebRequest = (HttpWebRequest)WebRequest.Create("http://" + this.routerIp + "/top_conn.xml");
            hwebRequest.Timeout = 500;
            HttpWebResponse hWebResponse = (HttpWebResponse)hwebRequest.GetResponse();
            XmlTextReader oXmlReader = new XmlTextReader(hWebResponse.GetResponseStream());       
            string value;
            while (oXmlReader.Read())
            {
                value = oXmlReader.Value;
                if (value.Trim() != ""){
                    return !value.Substring(value.IndexOf("=") + 1, 1).Equals("0");
                }
            }
            return false;

        }

el uso de Mozilla Firefox 3.5 y complemento Firebug Supuse que normalmente toma 30 ms para recuperar la página sin embargo, a las muy grandes 500ms limitar le sigue llegar a él a menudo. ¿Cómo puedo mejorar drásticamente el rendimiento?

Gracias de antemano

¿Fue útil?

Solución

No está cerrando la respuesta Web. Si ha emitirá peticiones al mismo servidor y no se ha cerrado los las respuestas, ese es el problema.

Se adhieren la respuesta en un comunicado using:

public bool IsOn()
{
    HttpWebRequest request = (HttpWebRequest) WebRequest.Create
        ("http://" + this.routerIp + "/top_conn.xml");
    request.Timeout = 500;
    using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
    using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
    {      
        while (reader.Read())
        {
            string value = reader.Value;
            if (value.Trim() != "")
            {
                return value.Substring(value.IndexOf("=") + 1, 1) != "0";
            }
        }
    }
    return false;    
}

(He hecho algunas otras alteraciones al mismo tiempo ...)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top