2016-06-11 88 views
0

我有一個控制檯應用程序,可以在一天中將數據寫入數據庫。我只想在兩次之間完成這項工作。目前,我正在使用while循環,並根據時間範圍檢查當前時間,我希望運行該作業。不過,這佔用了一些CPU能力。有沒有更好的方法來做到這一點?在某個特定時間開始/停止作業的方法

While(true) 
{ 
    if(current > DateTime.Today.AddHours(6) && current < DateTime.Today.AddHours(20)) 
    { 
     ---DO STUFF 
    } 
} 

回答

1

是的,考慮使用System.Timers.Timer類如下。這裏,間隔設置爲1000毫秒(1秒)。因此,在每1秒鐘後,當您可以執行您想要的任務時,它將引發Elapsed事件。

Timer tmr = new Timer(1000); 
tmr.Elapsed += elapsedHandler; 

private void elapsedHandler(Object source, ElapsedEventArgs e) 
{ 
    //do your work 
} 

根據您的意見,在這種情況下創建exe,並創建一個DOS批處理腳本來運行exe文件。然後使用Windows task scheduler在指定的時間範圍內運行dos script

+0

但是,如果我想要的工作,以06:00和20:00之間運行的日常然後我會有2個計時器。一個是作業應該運行的時間量,另一個是作業再次運行之前必須經過的時間量。那是對的嗎? –

+0

@MitchelStuartFountaine,如果有幫助,請參閱編輯答案。 – Rahul

+0

感謝您的反饋Rahul。我正在使用Windows任務計劃程序來啓動/結束控制檯應用程序。它會殺死這個進程,但由於依賴關係,我正在努力開始它。所以不幸的是Task Scheduler已經不在了。我也將最終將其變爲服務,以便服務僅在上述時間之間完成工作。 –

1

你可以保持同樣的方法,但使用的1毫秒或更大的睡眠,而CPU將較少使用

相關問題