У меня есть таймер, который не должен обрабатывать обработчик прошедшего события в одно и то же время. Но обработка одного Истекшего события может помешать другим. Я реализовал нижеследующее решение, но что-то не так. мне кажется, что либо я должен использовать таймер по-другому, либо использовать другой объект в потоковом пространстве. Кажется, что таймер подходит лучше всего, потому что мне нужно периодически проверять статус, но иногда проверка займет больше времени, чем мой интервал. Это лучший способ приблизиться к этому?
// 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();
}
}
}