Как заблокировать таймер при обработке прошедшего события?

У меня есть таймер, который не должен обрабатывать обработчик прошедшего события одновременно. Но обработка одного прошедшего событиямай мешать другим. Я реализовал приведенное ниже решение, но что-то не так; кажется, что я должен использовать таймер по-другому или использовать другой объект в пространстве потоков. Казалось, таймер подходит лучше всего, потому что мне нужно периодически проверять состояние, но иногда проверка занимает больше времени, чем мой интервал. Это лучший способ подойти к этому?

// 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();
    }
  }
}

Ответы на вопрос(5)

Ваш ответ на вопрос