当程序启动时,我的计时器“Elapsed”事件会触发两次。唯一分配“Elapsed”事件处理程序的位置是在“Main”方法中。我做错了什么吗?
//class level clock
public static System.Timers.Timer Clock;
static void Main(string[] args)
{
Clock = new System.Timers.Timer();
Clock.Elapsed += new ElapsedEventHandler(Clock_Elapsed);
Clock.AutoReset = false;
Clock.Interval = timerInterval; //this needs to be in milliseconds!
Clock.Enabled = true;
//run infinite loop until q is pressed
while (Console.Read() != 'q')
{}
}
static void Clock_Elapsed(object sender, ElapsedEventArgs e)
{
Clock.Stop();
//do some stuff
Clock.Start();
}
更新:
@fparadis2 提供的 AutoReset 解决了两次触发的问题。根本原因是我的定时器间隔设置为 30 毫秒而不是 30000 毫秒(30 秒),导致事件双重触发。