문제

C#에는 라우터 페이지에서 64B XML을 검색하여 인터넷 상태를 가져 오는 기능이 있습니다.

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;

        }

Mozilla Firefox 3.5 & Firebug Addon을 사용하면 일반적으로 페이지를 검색하는 데 30ms가 필요하지만 500ms 한도는 여전히 자주 도달합니다. 성능을 어떻게 극적으로 향상시킬 수 있습니까?

미리 감사드립니다

도움이 되었습니까?

해결책

웹 응답을 닫지 않습니다. 동일한 서버에 요청을 발행하고 닫지 않은 경우 저것들 응답, 그게 문제입니다.

응답을 a 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;    
}

(나는 동시에 몇 가지 다른 변경을했다 ...)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top