这相当于30分钟的计时器滴答声

本文关键字:计时器 滴答声 30分钟 相当于 | 更新日期: 2023-09-27 18:30:10

我有一个计时器,我想每30分钟启动一次我的后台工作人员。计时器滴答声的30分钟等效值是多少?

以下代码如下:

        _timer.Tick += new EventHandler(_timer_Tick);
        _timer.Interval = (1000) * (1);              
        _timer.Enabled = true;                       
        _timer.Start();       
    void _timer_Tick(object sender, EventArgs e)
    {
        _ticks++;
        if (_ticks == 15)
        {
            if (!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync();
            }
            _ticks = 0;
        }
    }

我不确定这是否是最好的方式,或者是否有人有更好的建议。

这相当于30分钟的计时器滴答声

计时器的Interval属性以毫秒为单位指定,而不是以刻度为单位。

因此,对于每30分钟启动一次的计时器,只需执行以下操作:

// 1000 is the number of milliseconds in a second.
// 60 is the number of seconds in a minute
// 30 is the number of minutes.
_timer.Interval = 1000 * 60 * 30;

但是,我不清楚你使用的Tick事件是什么。我想你的意思是Elapsed?

EDIT正如CodeNaked明确指出的,您所说的是System.Windows.Forms.Timer,而不是System.Timers.Timer。幸运的是,我的答案适用于两者:)

最后,我不明白为什么要在timer_Tick方法中保留一个计数(_ticks)。你应该重写如下:

void _timer_Tick(object sender, EventArgs e)
{
    if (!backgroundWorker1.IsBusy)
    {
        backgroundWorker1.RunWorkerAsync();
    }
}

为了使代码更可读,可以使用TimeSpan类:

_timer.Interval = TimeSpan.FromMinutes(30).TotalMilliseconds;

没有很好地回答这个问题。但如果你只想间隔30分钟,那么就给timer1.interval=1800000;

//一毫秒内有10000个刻度(别忘了这一点)

using Timer = System.Timers.Timer;
[STAThread]
static void Main(string[] args) {
    Timer t = new Timer(1800000); // 1 sec = 1000, 30 mins = 1800000 
    t.AutoReset = true;
    t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
    t.Start(); 
}
private static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
// do stuff every 30  minute
}