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-如果读取发生在循环之外,代码将永远处理相同的数据。