我在 Windows 窗体(C# 3.0、.net 3.5 SP1、VS2008 SP1、Vista)上有一个计时器,即使它停止后似乎也能工作。代码是:
using System;
using System.Windows.Forms;
namespace TestTimer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
StartTimer();
}
private DateTime deadline;
private void StartTimer()
{
deadline = DateTime.Now.AddSeconds(4);
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
int secondsRemaining = (deadline - DateTime.Now).Seconds;
if (secondsRemaining <= 0)
{
timer1.Stop();
timer1.Enabled = false;
MessageBox.Show("too slow...");
}
else
{
label1.Text = "Remaining: " + secondsRemaining.ToString() + (secondsRemaining > 1 ? " seconds" : " second");
}
}
}
}
即使在调用 timer1.Stop() 之后,我仍会继续在屏幕上接收 MessageBoxes。当我按 esc 时,它停止了。但是,我预计只会出现一个消息框......我还应该做什么?添加 timer1.Enabled = false 不会改变行为。
谢谢