好的,我试图每15秒比较两个字符串,然后更新信息框。
以下是我到目前为止从网上获取文本文档并将其存储到字符串中的代码:
public String GetData(String url)
{
WebRequest request = WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
String data = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return data;
}
这就是我在尝试比较字符串时所拥有的。
public void CompareStrings()
{
int x;
x = 1;
String data = GetData("http://xcastradio.com/stats/nowplaying.txt");
string savedData = data;
while (x > 0 && x < 100000001)
{
x++;
}
String data1 = GetData("http://xcastradio.com/stats/nowplaying.txt");
NowPlayingInfo1.Text = data;
NowPlaying np = new NowPlaying();
if (data1 != savedData)
{
NowPlayingInfo1.Text = data1;
np.Show(this);
}
}
答案 0 :(得分:6)
我不是故意嗤之以鼻,但目的是什么:
while (x > 0 && x < 100000001)
{
x++;
}
如果你想要暂停,为什么不只是Thread.Sleep(TimeSpan.FromSeconds(1))?你的代码示例没有多大意义。
答案 1 :(得分:4)
String.Compare(string1, string2 ......)
为您提供了更多选择。
请参阅MSDN上的String.Compare Method
答案 2 :(得分:3)
我认为你的CompareStrings()方法应该是这样的:
private bool _Comparing = false;
private string _URL = "http://xcastradio.com/stats/nowplaying.txt";
private string _data = "";
public void CompareStrings()
{
Timer timer = new Timer();
timer.Interval = 1000;
timer.Tick += timer_Tick;
_data = GetData(_URL);
_Comparing = true;
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
if (_Comparing)
{
string newdata = GetData(_URL);
if (newdata != _data)
{
NowPlaying np = new NowPlaying();
NowPlayingInfo1.Text = newdata;
_data = newdata;
np.Show(this);
}
}
else
{
Timer timer = (Timer)sender;
timer.Stop();
}
}
此代码使用Timer
每秒检查一次网址。每当此文本文件的内容发生更改时,此代码将弹出一个新的NowPlaying
窗口(我认为您正在尝试这样做),并将继续执行此操作,直到您设置_Comparing
为止到false
。
您也可能希望每秒轮询一次频率低于每秒一次,在这种情况下,您可以将timer.Interval
设置为10000(10秒)。
答案 3 :(得分:1)
public void CompareStrings()
{
String data = GetData("http://xcastradio.com/stats/nowplaying.txt");
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(15));
String data1 = GetData("http://xcastradio.com/stats/nowplaying.txt");
NowPlayingInfo1.Text = data;
NowPlaying np = new NowPlaying();
if (String.Compare(data, data1) != 0)
{
NowPlayingInfo1.Text = data1;
np.Show(this);
}
}
这个检查现在正在播放的歌曲的线程应该与主应用程序线程分开,因为它会睡觉并且您希望(我认为)您的应用程序在检查之间保持响应。
编辑:比较现在应该正常工作(未经测试)。
答案 4 :(得分:0)
我建议您使用以下内容: