title: C# Timer.Elapsed Event firing twice consecutively
body: <p>I have an application that calls static methods in a DLL every 60 seconds as part of a system "self-check" application. When I manually run the methods, they all complete in less than 10 seconds. My problem is the timer.elapsed event is firing twice, one right after the other. To add to that, for each time the timer elapses, the event fires one more time. (e.g. first time it's 2 firings, second it's 3, third it's 4, etc.) I have tried setting the timer.AutoReset = false along with setting timer.Enabled = false at the beginning of the elapsed event and then setting it to true at the end of the event. I've tried resetting the interval in the event. Every post I have found indicates that the above actions should have resolved this problem. Can anyone help me find what I'm missing?</p>
  
  <pre><code>static Timer cycle = new Timer();
  static int cycCount = 0;
  static void Main(string[] args)
  {
      Console.WriteLine("Firebird Survivor Auto Cycle Started.");
  
      Console.CancelKeyPress += Console_CancelKeyPress;
  
      cycle.Interval = 60000; //set interval for service checks.
      cycle.Elapsed += new ElapsedEventHandler(CycleComplete_Elapsed);
      cycle.AutoReset = false;
      cycle.Enabled = true;
  
      cycle.Elapsed += CycleComplete_Elapsed; 
  
      while (1 == 1) //stop main method from completing indefinitely
      {
          //WAIT FOR TIMER TO ELAPSE
      }
  
  }
  
  private static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
  {
      cycle = null;
  }
  
  static void CycleComplete_Elapsed(object sender, ElapsedEventArgs e) //method triggered by timer
  {
      cycle.Enabled = false;
  
      cycCount++;
  
      WormholeServiceControls.CheckWormHoleStatus();
      TimeControls.CheckTimePl(); //call time check
      PegasusServiceControls.CheckPegasusStatus(null);
  
      Console.Clear();
      Console.WriteLine("--------------------------");
      Console.WriteLine(String.Format("| Successful Cycles: {0} |", cycCount));
      Console.WriteLine("--------------------------");
  
      cycle.Enabled = true;
  }
  </code></pre>