我用C#从php读取时间。当时间相等时,我必须在Logoff窗口之前显示MessageBox。但是当我运行程序时它会显示相同的MessageBox 2时间。我想在Logoff之前只显示MessageBox 1次。我设置Interval是30,000。怎么做?这是我的代码
private void timer1_Tick(object sender, EventArgs e)
{
bool showingBox = false;
timer1.Start();
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://172.22.22.20/time.php");
StreamReader reader = new StreamReader(stream);
String content = reader.ReadToEnd();
//textBox1.Text = content;
if (showingBox) return;
showingBox = true;
try
{
if (content == "08:00")
{
MessageBox.Show(new Form() { TopMost = true }, "11111"); // This will show 2 Message Box when time = 08.00
}
}
finally
{
showingBox = false;
}
if (content == "08:05")
{
ExitWindowsEx(4, 0);
}
timer1.Enabled = false;
}
}
}
答案 0 :(得分:1)
我不知道我是否理解你的问题,但是你可能是两次启动计时器吗? 据我所知,你在timer_tick方法中再次启动计时器
private void timer1_Tick(object sender, EventArgs e)
{
bool showingBox = false;
timer1.Start(); // <-- second time startet.
答案 1 :(得分:0)
为什么在timer1_Tick事件中使用 timer1.Start(); ?
答案 2 :(得分:0)
我删除了 timer1.Start(),但它也显示了两次messagebox。我更改代码,如 flag = true; 必须在显示消息框之前运行。现在它工作!!。
if (content == "10:09")
{
if (!flag)
{
flag = true;
MessageBox.Show(new Form() { TopMost = true }, "11111" +flag);
}
}