C # .NET 2 Threading.Таймер - дрейф времени

У меня есть dll, потребляемая службой. Его основная задача - запускаться каждые X минут и выполнять некоторые системные проверки. В моей dll есть класс верхнего уровня, который объявляет System.threading.timer и Timercallback. Конструктор класса инициализирует timerCallback функцией моего потока. В моем обработчике "Onstart" я инициализирую таймер с помощью функции timercallback и устанавливаю следующее время срабатывания и интервал времени. В моем случае каждые 10 минут. Обычно в этих 10-минутных проверках делать нечего, но служба вынуждена что-то делать хотя бы раз в день в установленное время.

Моя проблема: я обнаружил, что во время тестирования время ежедневной проверки, которое проводится каждый день, медленно отклоняется от желаемого времени начала 8.30. например примерно за 20 с лишним дней мое время сдвинулось с 08.30 до 31.08.35. Он дрейфует примерно на 4-6 секунд каждый день.

Мой вопрос: кто-нибудь знает, почему время так дрейфует и как я могу заставить его придерживаться назначенного времени?

спасибо

6
задан Keith 8 December 2011 в 13:51
поделиться