我在C#中有一个函数,它通过从路由器页面检索64b XML来获取Internet的状态
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插件我猜测它通常需要30ms来检索页面,但是在非常大的500ms限制下它仍然经常达到它.如何显着提高性能?
提前致谢
您没有关闭网络回复.如果您已向同一服务器发出请求而未关闭这些响应,那就是问题所在.
在一份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; }
(我在同一时间做了一些其他改动......)