如果Execute()
需要3000毫秒才能完成,但是由于定时器间隔而每1000毫秒调用一次,下面的代码会发生什么?
Timer _timer = new Timer();
private void setupTimer()
{
_timer.Tick += new EventHandler(pollingTimeElapsed);
_timer.Interval = 1000;
_timer.Enabled = true;
_timer.Start();
}
private void pollingTimeElapsed(object sender, EventArgs e)
{
Execute();
}
编辑:我正在使用System.Windows.Forms.Timer,因为System.Timers.Timer没有.Tick
答案 0 :(得分:1)
我假设您正在使用System.Timers.Timer类。
由于AutoReset具有默认值(即True),因此每经过1000毫秒就会触发Elapsed事件。
如果您只想触发一次事件,请将AutoReset设置为False。
如果您不想在执行代码运行时触发事件,请执行以下操作:
Timer _timer = new Timer();
private void setupTimer() {
_timer.Tick += new EventHandler(pollingTimeElapsed);
_timer.Interval = 1000;
_timer.Enabled = true;
_timer.Start();
}
private void pollingTimeElapsed(object sender, EventArgs e) {
try {
_timer.Stop()
Execute();
} finally {
_timer.Start()
}
}