C# 服务计时器滴答作响,自动启用错误
我创建了一个不会自动重新启用的Windows服务 我已经创建了计时器C# 服务计时器滴答作响,自动启用错误,c#,service,timer,C#,Service,Timer,我创建了一个不会自动重新启用的Windows服务 我已经创建了计时器 private Timer timer1 = null; timer1 = new Timer(); timer1.Interval = 6000; timer1.Elapsed += new ElapsedEventHandler(timer1_Tick); timer1.Enabled = true; timer1.AutoReset = false; 然后是定时器滴答法 private void timer1_Ti
private Timer timer1 = null;
timer1 = new Timer();
timer1.Interval = 6000;
timer1.Elapsed += new ElapsedEventHandler(timer1_Tick);
timer1.Enabled = true;
timer1.AutoReset = false;
然后是定时器滴答法
private void timer1_Tick(object sender, ElapsedEventArgs e)
{
if (!IsServerConnected(db.Connectionstring))
{
//Error Handling
timer1.Interval = 300000;
}
else
{
if (!Directory.Exists(cfg.CSVPath))
{
//error handling
timer1.Interval = 300000;
}
else
{
timer1.Interval = 60000;
//Code
}
}
timer1.Start();
}
计时器将在6秒后按预定时间滴答作响,然后到达计时器1。间隔=60000
在没有遇到错误后执行
但是,注释中的代码需要一分钟以上的时间才能运行。一分钟后,即使代码仍在Timer1_Tick中运行,事件仍会再次触发,即使我不应该启动计时器
谁能看出我错在哪里?设置间隔是否会自动启动计时器?因此,我不需要在代码末尾使用Timer1.Start(),而是在所有代码完成后设置时间间隔?任何帮助都将不胜感激,谢谢
更新
我试过停止计时器
timer1.Enabled = false;
timer1.Stop();
但是,在设置间隔之前,这也会导致多个滴答声。间隔=60000这是60秒,而不是6秒<代码>定时器1.Interval=300000代码>这实际上是300秒(5分钟)是的,因此计时器在6秒后运行,如果有错误,将间隔设置为5分钟,如果没有错误,将间隔设置为60秒,则问题是6秒计时器滴答声成功,但是60秒的滴答声发生在6秒滴答声仍在运行的时候,我需要它不要同时运行两个滴答声,我认为这是通过将自动重置设置为false实现的,但显然不是:-(请尝试在
timer1\u Tick
开始时停止计时器,做好准备,设置时间间隔,然后像您一样启动计时器。似乎只有timer.stop()
在您的样本中丢失不幸的是,即使停止计时器,它似乎仍会滴答几次timer1.Interval=60000
这是60秒,而不是6秒。timer1.Interval=300000;
这是300秒(5分钟)实际上我是的,所以计时器在6秒后运行,如果有错误,将间隔设置为5分钟,如果没有,则将间隔设置为60秒,问题是6秒计时器滴答声成功,但60秒滴答声发生在6秒滴答声仍在运行时,我需要它不要同时运行两个滴答声,我认为这是可以实现的通过将auto reset设置为false,但显然不是:-(请尝试在timer1\u Tick
开始时停止计时器,做好准备,设置间隔,然后像您一样启动计时器。您的样本中似乎只缺少timer.stop()
,不幸的是,即使停止计时器,它似乎仍会多次滴答作响