Служба Windows и изменение часового пояса - PullRequest
1 голос
/ 05 декабря 2009

У меня есть служба Windows, написанная на C # с .Net 3.5. Он работал на сервере в течение нескольких недель, когда было обнаружено, что часовой пояс сервера установлен неправильно. Это было исправлено, но служба не была перезапущена. К моему удивлению сервис не забрал смену часов.

Мой вопрос: это также будет проблемой при переходе на летнее время? И если так, что можно сделать с этим, кроме перезапуска службы?

1 Ответ

1 голос
/ 05 декабря 2009

Я бы сказал, добавить обработчик для события Microsoft.Win32.SystemEvents.TimeChanged. Однако это не работает напрямую в Сервисе:

Это событие возникает, только если работает насос сообщений. В службе Windows, если не используется скрытая форма или насос сообщений запущен вручную, это событие не будет вызываться. Пример кода, который показывает, как обрабатывать системные события с помощью скрытой формы в службе Windows, см. В классе SystemEvents.

Вам нужно взглянуть на Пример2 на этой второй странице:

Пример 2

В следующем примере кода демонстрируется очень простая служба Windows, которая обрабатывает события TimeChanged и UserPreferenceChanged. Пример включает в себя службу с именем SimpleService, форму с именем HiddenForm и установщик. Форма предоставляет цикл сообщений, необходимый для системных событий.

...