这相当于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;
}
}
我不确定这是否是最好的方式,或者是否有人有更好的建议。
计时器的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
}