2009-12-04 71 views
1

我有一个用C#与.Net 3.5编写的Windows服务。当它发现服务器的时区设置不正确时,它已经在服务器上运行了几个星期。这已得到纠正,但该服务未重新启动。令我惊讶的是,这项服务并没有改变时钟。Windows服务和更改时区

我的问题是在夏令时开关期间这也会成为问题吗?如果是这样,除了重新启动服务之外,还可以做些什么?

回答

1

我会说为Microsoft.Win32.SystemEvents.TimeChanged事件添加处理程序。但是,它不直接在服务中工作:

只有在消息泵正在运行时才会引发此事件。在Windows服务中,除非使用隐藏窗体或手动启动消息泵,否则不会引发此事件。有关如何通过在Windows服务中使用隐藏窗体来处理系统事件的代码示例,请参阅SystemEvents类。

你需要看看例题此第二页上:

例2

下面的代码示例演示了一个非常简单的Windows服务,处理TimeChangedUserPreferenceChanged事件。该示例包括一个名为SimpleService的服务,一个名为HiddenForm的表单和一个安装程序。该表单提供了系统事件所需的消息循环。