Обычно я делаю, чтобы мое событие останавливало таймер, когда оно поднялось, и затем перезапускало таймер, когда процесс события завершался:
private void timerHandler(object sender, TimerElapsedEventArgs e)
{
Timer timer = (Timer)sender;
timer.Stop();
RunProcess();
timer.Start();
}
public void RunProcess()
{
/* Do stuff that takes longer than my timer interval */
}
Теперь мой таймер снова запустится после завершения процесса