タイムアウトをトリガー非常に遅いにWebResponse
-
23-08-2019 - |
質問
私は、ルータのページ
から64bはXMLを取得することで、インターネットの状況を取得し、C#での機能を持っています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のアドオンを使用して、私は、それは通常、非常に巨大な500ミリ秒でしかしページを取得し、それは多くの場合、それに到達静止画制限するために、30ミリ秒を要する推測しました。どのように私はパフォーマンスを劇的に向上させることができますか?
事前に感謝します。
解決
は、Web応答を閉じていません。同じサーバーと閉じられていないのものをのレスポンスに要求を発行した場合、それが問題だ。
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;
}
(私は...、同時に他のいくつかの変更を加えました)
所属していません StackOverflow