簡體   English   中英

在特定時間運行Windows服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM