我在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限制下它仍然经常达到它。如何显着提高性能?
提前致谢
答案 0 :(得分:9)
您没有关闭网络回复。如果您已向同一服务器发出请求而未关闭那些响应,那就是问题所在。
将回复贴在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;
}
(我在同一时间做了一些其他改动......)