سؤال

لدي وظيفة في C # التي جلب حالة الإنترنت عن طريق استرداد XML 64B من صفحة الموجه

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;

        }

باستخدام Addon باستخدام Mozilla Firefox 3.5 & Firebug، فإنه أظن أنه عادة ما يستغرق 30 مللي ثانية لاسترداد الصفحة ومع ذلك في فرض 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;    
}

(لقد صنعت بعض التعديلات الأخرى في نفس الوقت ...)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top