Итак, у меня установлен базовый таймер для пробуждения службы Windows каждую минуту
Timer timer = new Timer();
timer.Interval = 1000 * 60; // 60 seconds
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Start();
Он работает большую часть времени, но я заметил, что каждый час он увеличивает интервал прошедшего времени в 1секунда:
[...]
Service is recall at 9/25/2019 1:26:52 AM
Service is recall at 9/25/2019 1:27:52 AM
Service is recall at 9/25/2019 1:28:52 AM
Service is recall at 9/25/2019 1:29:52 AM
Service is recall at 9/25/2019 1:30:53 AM
Service is recall at 9/25/2019 1:31:53 AM
Service is recall at 9/25/2019 1:32:53 AM
[...]
Это привело к тому, что служба пропустила отзыв службы при изменении минуты:
Service is recall at 9/20/2019 2:38:59 AM
Service is recall at 9/20/2019 2:40:00 AM
Служба не была вызвана в 2:39.
Я думаю,это происходит из-за того, что таймер активируется по истечении заданного времени, не обязательно в точное время, когда достигнут интервал, и это нормально (мне не нужна огромная точность, если служба активируется каждую минуту).Я просто не хочу, чтобы интервал между вызовами увеличивался на 1 секунду каждый час или около того.
Я пытался вычислить новый интервал (вместо 60000 миллисекунд), чтобы исправить истекшее время, но оно не является равномерным.
Есть идеи, как этого избежать?