2010-03-22 3 views
1

У меня проблема с System.Threading.Timer. Я планирую некоторые действия, используя время в службе Windows. Таймер начинает выполнение обратного вызова после указанного периода времени ожидания. Служба Windows запускается после автоматической перезагрузки. Тем не менее, я наблюдал странную вещь после перезагрузки системы - метод обратного вызова начинает выполняться сам за 3 или 4 минуты до указанного периода. Что может быть причиной такого поведения?Таймер в службе windows

Вот пример кода:

TimeSpan timeToWait = this.StartTime - DateTime.Now; 
Int64 msToSleep = (Int64)Math.Round(timeToWait.TotalMilliseconds); 
_timer = new Timer(callback_method, null, msToSleep, MinutesScheduledInterval * 60000); 

где _timer переменная член, время_запуска - время, когда таймер должен первым огонь.

+0

У вас есть пример кода? –

+0

Вы пробовали записывать значения всех переменных, участвующих в этом коде? –

+0

Да, конечно. Здесь используются значения, которые ожидаются. – Markus

ответ

2

Как скоро после загрузки начнется сервис? Служба Windows Time может настроить часы, чтобы синхронизировать их с контроллером домена. Значение DateTime.Now может быть принято до того, как это произойдет. Сначала диагностируйте его, введя BIOS при загрузке и проверке часов. Исправьте его зависимостью от службы.

+0

Что вы подразумеваете под зависимостью службы? Послушайте, я делаю это на удаленном сервере и не имею возможности делать то, что вы предложили. – Markus

+0

Вкладка «Зависимости» свойств службы. Если вы не можете добраться до клавиатуры, то, возможно, местный администратор может? –

+0

Не могли бы вы привести пример службы, от которой зависит текущая служба? Является ли услуга Net Logon здесь подходящей? – Markus

Смежные вопросы