2011-12-12 68 views
-2

我寫了ac#服務註冊到systemevent.Timechange()函數調用OntimeChange()(如在MSDN http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.aspx中提到) 在Visual Studio中運行此代碼都工作正常(在調試或發佈模式下),但是當我運行服務時,我看到函數OntimeChange()沒有被調用(我在這個函數中添加了打印到日誌中,並且我看到沒有任何內容打印到日誌中)C#服務註冊到systemevent.Timechange()

有人可以幫忙嗎?

+2

請顯示一些代碼而不是口頭描述。 –

+0

這是一個Windows服務?你有一個隱藏的窗體如下所述:http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.timechanged.aspx – kmp

回答

1

SystemEvents.TimeChanged事件中,你可以閱讀下面的文字說明部分:

注意

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

因此,總之,您需要一個隱藏的表單來接收服務中的這些事件。 請參閱您在問題中關聯的頁面上列出的Example 2如何執行此操作。

+0

我有隱藏窗體和調試所有worrk! private void HiddenFormLoad(object sender,EventArgs e) {SystemIvents.TimeChanged + = _onTimeChanged; } – gln

+0

然後你應該更新你的問題並顯示你的一些代碼。你能否確認表單實際上是在後臺運行的(例如事件日誌中的表單ctor或HiddenForm_Load()方法)? –

0

使用AppDomain.CurrentDomain.BaseDirectory