gpt4 book ai didi

c# - 非常慢的 WebResponse 触发超时

转载 作者:数据小太阳 更新时间:2023-10-29 02:01:56 26 4
gpt4 key购买 nike

我在 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 插件我猜它通常需要 30 毫秒来检索页面,但是在非常大的 500 毫秒限制下它仍然经常达到它。我怎样才能显着提高性能?

提前致谢

最佳答案

您没有关闭网络响应。如果您已向同一台服务器发出请求但未关闭那些 响应,那就是问题所在。

将响应粘贴在 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;
}

(我同时做了一些其他改动...)

关于c# - 非常慢的 WebResponse 触发超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com