2009-07-06 13 views
4

私はそれが正常に30ミリ秒を要し、私は推測したMozilla Firefoxの3.5 & Firebugのアドオンを使用して、ルータのページ非常に遅いにWebResponseトリガーTimeOutの

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; 

     } 

から64bはXMLを取得することで、インターネットの状況を取得し、C#での機能を持っていますページを取得することができますが、非常に巨大な500msの限界でそれはまだ頻繁にそれに達する。どのようにしてパフォーマンスを飛躍的に向上させることができますか?

おかげで、事前

答えて

9

には、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;  
} 

(私は...、同時に他のいくつかの変更を加えました)

+0

おかげで、そのようなnoobの問題のため申し訳ありません... – Luffy