windows服務可以設置爲在特定時間運行..?在特定時間運行windows服務
例
From 8:00 am to 5:00pm run process
From 5:00 pm to 8:00am run process
這個過程可以每天運行,每週或一天..
請讓我知道,你的思想
windows服務可以設置爲在特定時間運行..?在特定時間運行windows服務
例
From 8:00 am to 5:00pm run process
From 5:00 pm to 8:00am run process
這個過程可以每天運行,每週或一天..
請讓我知道,你的思想
我面臨類似的情況,我不得不開發一種服務,該服務只在交易時間從每天上午11點到下午3點在這種特定情況下進行。這一天剩下的時間它將保持閒置。我分享了我在案件中所做的事情。我不確定這是否對你有幫助,但我希望它會有幫助。
兩個變量維護開始時間和結束時間
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 Task Scheduler根據需要安排它。
這將提供與服務相同的好處,但允許您在部署後更多地控制調度。
嗨,大家好,感謝您的快速回復。所有的建議看上去很不錯。但是在我開始,我想與大家分享我的應用程序的場景..程序將全天候運行*場景編號1從上午8:00到下午5:00,應用程序將檢查幾個文件夾並掃描它們,如果文件夾包含一些文件..程序將創建附加所有文件的電子郵件並將發送給用戶A *方案編號2從下午5:00到8:00是同一個進程將被執行,但不同的用戶使用這種情況下,我可以使用你的建議..? – Link
@link它取決於 - 如果您希望服務只是連續觀看文件夾,那麼最好在服務中使用FileSystemWatcher,並持續觀看。如果你想擁有它在固定的時間運行,則任務計劃程序是一個很好的選擇,因爲它可以讓你輕鬆地更改計劃... –
有幾種方法可以解決這個問題。從編碼的角度來看,最簡單的方法是編寫一個控制檯應用程序,然後使用任務調度程序運行它。
一個windows服務總是在運行,所以你希望你的服務能夠休眠一段時間,喚醒檢查當前時間是否在窗口中,以及它是否被執行。
這兩種方法都有其優點和缺點,它更多地關注服務的功能。我不知道答案的一個問題是,如果計劃任務的用戶未登錄,那麼計劃的任務是否會運行。這是我最關心的任務調度程序方法。
嗨,大家好, 感謝您的快速回復。所有的建議看上去很不錯..但在此之前我開始我想與大家分享我的應用程序的情況。該計劃將通過24/7 *情景1號 從上午8:00持續到下午5:00的應用程序將檢查幾個文件夾和掃描他們,如果文件夾包含一些文件..該計劃將建立一個電子郵件連接的所有文件和將被髮送到用戶A *案例數量2 從下午5:00到8:00同樣的過程將被執行 但不同的用戶 我們在這種情況下,我可以使用你的建議..? – Link
如果它是不同的用戶,我認爲你真的想要與計劃任務。否則你會打開一整套關於管理身份的蠕蟲 - 它會變得很難看。 – Jason
非常感謝你的幫助傑森..感激.. – Link
你可以做的是使用Windows任務調度程序並創建一個任務來啓動服務,另一個任務是停止服務。所有你需要做的就是創建一個批處理文件來啓動和停止服務。
實例啓動服務:
net start MyService
實例停止服務
net stop MyService
你可以'Int32.TryParse(string,out int)'將字符串轉換爲整數的方法。如果字符串格式不正確,或者參數爲null或字符串包含大整數,則「Int32.Parse」方法將引發異常。但是'Int32.TryParse'在這種情況下不會發生異常。如果字符串不能轉換爲整數,它將返回'false',否則返回'true',然後第二個參數將包含整數值。 –
但是,如果您需要自己處理上述所有異常情況,那麼可以使用'Int32.Parse'方法包裝適當的'try ... catch'塊並顯示適當的消息。 –
謝謝@Sayem,你可以編輯我的答案,並把'Int32.TryParse(string,out int)'而不是'Int32.Parse'方法。 –