C# 服务计时器滴答作响,自动启用错误

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

我创建了一个不会自动重新启用的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_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()
,不幸的是,即使停止计时器,它似乎仍会多次滴答作响