定时器间隔调用长方法
本文关键字:方法 调用 定时器 | 更新日期: 2023-09-27 18:08:16
如果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 .Timer .Timer没有。tick
我假设你正在使用System.Timers.Timer类。
由于AutoReset具有默认值(为True),因此每经过1000ms就会触发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()
}
}