2012-12-29 37 views
1

這是我第一次將Windows服務應用程序放在一起,我一直在閱讀不同的方法來以某種定時間隔運行多個任務。一天一次,另一次每隔1分鐘一次。不知道如何處理Windows服務中的多個定時線程

我得出的結論是使用TimedCallBack和System.threating.timer計時器。

非優雅的例子

private void DailyTask(object state) { 
    //do something daily 
} 

private void IntervalTask(object state) { 
    //do something else 
} 

private void OnStart() { 
    TimedCallBack dailyTcb = DailyTask; 
    TimedCallBack intervalTcb = IntervalTask; 
    System.Threading.Timer dailyTimer = new Timer(dailyTcb, null, 0, 86400000); 
    System.Threading.Timer intervalTimer = new Timer(intervalTcb, null, 0, 60000); 
} 

private void OnStop() { 
    intervalTimer.Dispose(); 
    dailyTimer.Dispose(); 
} 

問題

1)不定時啓動任務完成之後的時鐘?如果每次運行它都會花費一定的時間來完成,這會慢慢地導致它慢慢過去一天?我會假設,然後我需要確定需要多長時間運行到 運行減24小時?

2)這是一個完美的方法2簡單的任務。

謝謝

回答

1

定時器不會等到完成任務後才能重新啓動計時器。例如,如果將計時器設置爲20毫秒,回調花費的時間超過20毫秒,則在第一次結束之前會再次獲得一個刻度。

我的主意沒有看到任何特別的錯誤。但是,如果這就是你的所有服務正在做的事情(即只是坐在那裏,等待每隔一段時間觸發一次),那麼你可以考慮將其製作成一個簡單的控制檯模式程序並使用計劃任務來執行它。查看Windows任務計劃程序和schtasks命令行工具。

相關問題