Я запускаю приложение в качестве службы на сервере, а затем у меня есть несколько клиентов, подключающихся к этой службе.Я отображаю точное время сервера в каждом клиентском приложении формы окна, и поэтому мне нужен механизм для обнаружения любого изменения времени на сервере, чтобы я мог отправить его клиенту для отображения.
ПросмотрMSDN, который я нашел SystemEvents.TimeChanged, я подумал, что мне повезло, потому что при тестировании с кодом ниже в Visual Studio все работает отлично:
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
static void SystemEvents_TimeChanged(object sender, EventArgs e)
{
//Occurs when user manually changes the time or due to
//daylight saving time. Server will issue its latest time
//to all the clients so time can be adjusted.
}
К сожалению, когда я запускаю это как службу, это событие будетникогда не запускаться, потому что, глядя на мелкий шрифт на MSDN, событие TimeChanged запускается только в приложении с активным насосом сообщений (он же должен иметь запущенную форму).Он работает в Visual Studio, потому что у него есть форма, когда я запускаю его как не сервисный режим.
Я могу исправить это, выбрав опцию «Разрешить сервису взаимодействовать с рабочим столом», но это не соответствует целия пытаюсь запустить приложение в качестве службы.
Я мог бы создать событие отметки времени в приложении для проверки изменения времени, скажем, каждые 10 секунд или около того, но это большие затраты, просто чтобы проверитьслучайное изменение времени, которое происходит на сервере дважды или, может быть, 3 раза в год.
Таким образом, кто-нибудь знает событие C #, которое вызывает изменение времени, которое работает в приложении, в котором не работает насос сообщений?Я удивлен, если Microsoft не включает событие, которое работает таким образом
Спасибо.