定时器间隔调用长方法

时间:2013-04-09 07:15:38

标签: c# timer

如果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

1 个答案:

答案 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()
    }
}