Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行此代码需要30秒,I';我显然做错了什么_C# - Fatal编程技术网

C# 运行此代码需要30秒,I';我显然做错了什么

C# 运行此代码需要30秒,I';我显然做错了什么,c#,C#,这段代码需要一段时间来执行,即使我需要它做的只是从网站上获取一个文本字符串。我现在有这个 private void main_Load(object sender, EventArgs e) { string word = "1.5"; try { var url = "http://chipperyman573.com/rtf/textbot.html"; var client = new

这段代码需要一段时间来执行,即使我需要它做的只是从网站上获取一个文本字符串。我现在有这个

private void main_Load(object sender, EventArgs e)
    {
        string word = "1.5";

        try
        {
            var url = "http://chipperyman573.com/rtf/textbot.html";
            var client = new WebClient();
            using (var stream = client.OpenRead(url))
            using (var reader = new StreamReader(stream))
            {
                string downloadedString;
                while ((downloadedString = reader.ReadLine()) != null)
                {
                    if (downloadedString == word)
                    {
                        //The stuff happens if there's no update
                    }
                    else
                    {
                        //The stuff that happens if there is an update
                    }
                }
            }
        }
        catch
        {
            //The stuff that happens if it can't connect to the webpage
        }
    }

这大约需要30秒的时间,而且应该非常快。页面上只有文本。

您是否尝试过仅使用HttpWebRequest对象?WebClient是一个更高级别的包装器,它可能会提供您不需要的自由。 只是使用了这段代码,它只花了一秒多的时间就运行了

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://chipperyman573.com/rtf/textbot.html");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        String result = reader.ReadToEnd();

您是否尝试过只使用HttpWebRequest对象?WebClient是一个更高级别的包装器,它可能会提供您不需要的自由。 只是使用了这段代码,它只花了一秒多的时间就运行了

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://chipperyman573.com/rtf/textbot.html");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        String result = reader.ReadToEnd();

将'downloadedString=reader.ReadLine()'放在'while'之外,并像这样编写循环:while((downloadedString)!=null)。这可能不会有什么区别,但是没有必要每次while循环都复制reader.ReadLine()。
client.OpenRead(url)
在这里需要1到4秒。与手动重新加载页面所需的时间大致相同。似乎很好。我不知道,在程序中大约需要30秒,但在chrome中加载它只需要1-3秒。当你使用调试器进行调试时,它在哪里花费时间?@Nilzone-如果读取发生在循环之外,代码将永远处理相同的数据。Put'downloadedString=reader.ReadLine()'while'之外,编写循环,如:while((downloaddedstring)!=null)。这可能不会有什么区别,但是没有必要每次while循环都复制reader.ReadLine()。
client.OpenRead(url)
在这里需要1到4秒。与手动重新加载页面所需的时间大致相同。似乎很好。我不知道,在程序中大约需要30秒,但在chrome中加载它只需要1-3秒。当你使用调试器进行调试时,它在哪里花费时间?@Nilzone-如果读取发生在循环之外,代码将永远处理相同的数据。