我有一个用C#编写的带有.Net 3.5的Windows服务。当发现服务器的时区设置不正确时,它已经在服务器上运行了几个星期。这已得到纠正,但服务未重新启动。令我惊讶的是,该服务没有取得时钟变化。
我的问题是,在夏令时切换期间,这也是一个问题吗?如果是这样,除了重新启动服务之外还能做些什么?
答案 0 :(得分:1)
我会说为Microsoft.Win32.SystemEvents.TimeChanged
事件添加一个处理程序。但是,它不能直接在服务中使用:
仅在消息泵运行时才会引发此事件。在Windows服务中,除非使用隐藏表单或手动启动消息泵,否则不会引发此事件。有关演示如何使用Windows服务中的隐藏表单处理系统事件的代码示例,请参阅
SystemEvents
类。
您需要在第二页上查看Example2:
示例2
以下代码示例演示了一个处理
TimeChanged
和UserPreferenceChanged
事件的非常简单的Windows服务。该示例包括名为SimpleService的服务,名为HiddenForm的表单和安装程序。表单提供系统事件所需的消息循环。