[英]Run windows service on a specific time
可以將Windows服務設置為在特定時間運行..?
例
From 8:00 am to 5:00pm run process
From 5:00 pm to 8:00am run process
此過程可以每天,每周或一天運行。
請讓我知道你的想法
通常,如果這是您的要求,則可以通過編寫簡單的控制台應用程序,然后使用Windows任務計划程序根據需要對其進行計划來提供更好的服務。
這將提供與服務相同的好處,但允許您在部署后更多地控制調度。
我遇到了類似的情況,我必須開發一種服務,只有在特定情況下每天上午11:00到下午3:00的交易時間才能做某事。 它將在一天的剩余時間內保持閑置狀態。 我正在分享我在案件中所做的事情。 我不確定它對你有幫助,但我希望它會。
兩個變量保持開始時間和結束時間
TimeSpan StartingTime = new TimeSpan(
Int32.Parse(
ConfigurationManager
.AppSettings["StartingTimeHour"]),
Int32.Parse(
ConfigurationManager
.AppSettings["StartingTimeMinute"]), 0);
TimeSpan EndingTime = new TimeSpan(
Int32.Parse(
ConfigurationManager
.AppSettings["EndingTimeHour"]),
Int32.Parse(
ConfigurationManager
.AppSettings["EndingTimeMinute"]), 0);
//Starting time and Ending time may change in future. So I used app.config
//instead of fixing them to (11,0,0) and (15,0,0) respectively
檢查是否是交易時間的方法
public bool TradingTime()
{
TimeSpan CurrentTime = DateTime.Now.TimeOfDay;
return ((CurrentTime > StartingTime) && (CurrentTime < EndingTime));
}
然后有必要檢查時間並根據具體情況執行:
while (TradingTime())
{
//do whatever required
}
有幾種方法可以解決這個問題。 從編碼角度來看,最簡單的方法是編寫控制台應用程序,然后使用任務調度程序運行它。
Windows服務始終在運行,因此您希望服務在一段時間內休眠,喚醒檢查當前時間是否在窗口中,然后是否執行。
這兩種方法都有其優點和缺點,而且更多的是關於服務的作用。 我不知道答案的一個問題是,如果安排任務的用戶沒有登錄,計划任務是否會運行。這將是我對任務調度程序方法的最大擔憂。
您可以做的是使用Windows任務計划程序並創建任務以啟動服務,以及另一項停止服務的任務。 您需要做的就是創建一個批處理文件來啟動和停止服務。
示例啟動服務:
net start MyService
示例停止服務
net stop MyService
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.