2013-08-29 47 views
1

我已經創建了一個Windows服務。其中我已經爲每一分鐘設置了計時器間隔,因此它每分鐘都會觸發一次。但我需要觸發相同的每一天..如何在Windows服務中設置一天的計時器間隔

您可以在下面找到我在那裏設置OnStart()方法計時器的時間間隔的代碼..

代碼:

protected override void OnStart(string[] args) 
    { 
     TraceService("start service"); 

     //handle Elapsed event 
     timer.Elapsed += new ElapsedEventHandler(OnElapsedTime); 

     //This statement is used to set interval to 1 minute (= 60,000 milliseconds) 

     timer.Interval = 86400000; 

     //enabling the timer 
     timer.Enabled = true; 
    } 
+2

那麼是什麼問題?它不工作? – Damith

+0

你正在使用哪個計時器? .NET中有很多計時器。 –

+0

可能會幫助你兄弟''http://stackoverflow.com/questions/280566/run-once-a-day –

回答

0

所以,夫婦關於你的帖子的東西:

首先,它沒有說明是什麼問題!

從技術上講,Timer支持大約25天的計時器間隔。 所以,你的代碼應該工作。

如果你想超過25天,你不關心線程安全性,我建議你去System.Threading.Timer。

更多信息here

因爲,你的服務作爲一個基於Windows的服務,我建議你去System.Threading.Timer運行。

+0

我的問題是如何設置一天的時間間隔..當我嘗試給予一分鐘(60000毫秒)的工作..因此,我給了86400000(24 * 60 * 60 * 1000)作爲計時器間隔這是不工作..我正在測試通過調用一個方法,將日誌條目存儲在一個單獨的文件中,當我通過手動更改系統日期時間來檢查日期時,我沒有收到條目...請提供解決方案達到這個...... –

+0

@ D.N.E.Z - 如果你告訴計時器等待一天,它會等待一天。它不關注系統時鐘。 –

4

這篇文章已經很老了,但我認爲值得一提的是,不要使用像86400000這樣的幻數,而是最好使用像TimeSpan(1,0,0,0).TotalMilliseconds之類的東西,這樣如果有人需要改變它,他們會知道應該改變什麼。

0

在C#中,您現在可以使用TimeSpan類在一天中獲取總毫秒數來設置每天計時器。

var totalMilliSecondsPerDay = TimeSpan.FromDays(1).TotalMilliseconds; 
var timer = new Timer(totalMilliSecondsPerDay); 
相關問題