title: How to block a timer while processing the elapsed event?
body: <p>I have a timer that needs to not process its elapsed event handler at the same time.  But processing one Elapsed event <em>may</em> interfere with others.  I implemented the below solution, but something feels wrong; it seems like either I should be using the timer differently or using another object within the threading space.  The timer seemed to fit best because I do need to periodically check for a status, but sometimes checking will take longer than my interval.  Is this the best way to approach this?</p>
  
  <pre><code>// member variable
  private static readonly object timerLock = new object();
  private bool found = false;
  
  
  // elsewhere
  timer.Interval = TimeSpan.FromSeconds(5).TotalMilliseconds;
  timer.Elapsed = Timer_OnElapsed;
  timer.Start();
  
  
  public void Timer_OnElapsed(object sender, ElapsedEventArgs e)
  {
    lock(timerLock)
    {
      if (!found)
      {
        found = LookForItWhichMightTakeALongTime();
      }
    }
  }
  </code></pre>