【发布时间】:2009-12-04 21:52:42
【问题描述】:
我有一个用 .Net 3.5 用 C# 编写的 Windows 服务。当发现服务器的时区设置不正确时,它已经在服务器上运行了几个星期。这已得到纠正,但服务未重新启动。令我惊讶的是,该服务没有收到时钟更改。
我的问题是,在夏令时切换期间这也会成为问题吗?如果是这样,除了重启服务还能做什么?
【问题讨论】:
标签: c# .net-3.5 windows-services timezone
我有一个用 .Net 3.5 用 C# 编写的 Windows 服务。当发现服务器的时区设置不正确时,它已经在服务器上运行了几个星期。这已得到纠正,但服务未重新启动。令我惊讶的是,该服务没有收到时钟更改。
我的问题是,在夏令时切换期间这也会成为问题吗?如果是这样,除了重启服务还能做什么?
【问题讨论】:
标签: c# .net-3.5 windows-services timezone
我会说为Microsoft.Win32.SystemEvents.TimeChanged 事件添加一个处理程序。但是,它不能直接在服务中工作:
仅当消息泵正在运行时才会引发此事件。在 Windows 服务中,除非使用隐藏表单或手动启动消息泵,否则不会引发此事件。有关显示如何在 Windows 服务中使用隐藏表单来处理系统事件的代码示例,请参阅
SystemEvents类。
您需要查看第二页上的 Example2:
示例 2
以下代码示例演示了一个非常简单的 Windows 服务,它处理
TimeChanged和UserPreferenceChanged事件。该示例包括一个名为 SimpleService 的服务、一个名为 HiddenForm 的表单和一个安装程序。表单提供了系统事件所需的消息循环。
【讨论】: