2009-12-04 74 views
1

我有一個用C#與.Net 3.5編寫的Windows服務。當它發現服務器的時區設置不正確時,它已經在服務器上運行了幾個星期。這已得到糾正,但該服務未重新啓動。令我驚訝的是,這項服務並沒有改變時鐘。Windows服務和更改時區

我的問題是在夏令時開關期間這也會成爲問題嗎?如果是這樣,除了重新啓動服務之外,還可以做些什麼?

回答

1

我會說爲Microsoft.Win32.SystemEvents.TimeChanged事件添加處理程序。但是,它不直接在服務中工作:

只有在消息泵正在運行時纔會引發此事件。在Windows服務中,除非使用隱藏窗體或手動啓動消息泵,否則不會引發此事件。有關如何通過在Windows服務中使用隱藏窗體來處理系統事件的代碼示例,請參閱SystemEvents類。

你需要看看例題此第二頁上:

例2

下面的代碼示例演示了一個非常簡單的Windows服務,處理TimeChangedUserPreferenceChanged事件。該示例包括一個名爲SimpleService的服務,一個名爲HiddenForm的表單和一個安裝程序。該表單提供了系統事件所需的消息循環。