我發現this answer,我嘗試做遵循,但是當我開始我的服務。它並沒有給我帶來任何工作。我無法理解的一件事是:`_timer = new Timer(10 * 60 * 1000); //每10分鐘預約C#Windows服務來執行日常任務
我想下午10:00每天執行我的服務,我怎麼能做到這一點?
我發現this answer,我嘗試做遵循,但是當我開始我的服務。它並沒有給我帶來任何工作。我無法理解的一件事是:`_timer = new Timer(10 * 60 * 1000); //每10分鐘預約C#Windows服務來執行日常任務
我想下午10:00每天執行我的服務,我怎麼能做到這一點?
你可以找出current time
和你desired schedule time
之間的difference
並做出相應的推移間隔。這樣的計時器will fire once
在預定時間的事件。時間間隔設置爲24小時。
private System.Timers.Timer _timer;
private void SetTimer()
{
DateTime currentTime = DateTime.Now;
int intervalToElapse = 0;
DateTime scheduleTime = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, 10,0,0);
if (currentTime <= scheduleTime)
intervalToElapse = (int)scheduleTime.Subtract(currentTime).TotalSeconds;
else
intervalToElapse = (int)scheduleTime.AddDays(1).Subtract(currentTime).TotalSeconds;
_timer = new System.Timers.Timer(intervalToElapse);
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
_timer.Start();
}
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//do your work
_timer.Interval = (24 * 60 * 60 * 1000);
}
即使計時器是你參考答案每十分鐘輪詢 - 它只是處理每天一次:
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// ignore the time, just compare the date
if (_lastRun.Date < DateTime.Now.Date)
{
要做到這一點,在上午10:00添加另一個條件,如:
_lastRun.Date < DateTime.Now.Date & & DateTime.Now.Hour = 10
十分鐘是用作輪詢頻率的時間。
那麼你能告訴我,那10分鐘是什麼意思?謝謝。 – Nothing 2012-08-12 01:01:13
請參閱我的編輯。如果你想在代碼上計劃任務運行它只是有,當你開始使用命令行參數,運行過程中的exe文件,但是如果你雙擊exe文件,將告訴你如何運行的說明無人看管 - 這樣當人們想知道程序的功能時,人們不會意外啓動一個程序。 – 2012-08-12 01:07:46
Windows有一個內置的任務調度程序,它可以更好地用於任何調度需求。處理日程安排任務時會遇到很多問題,例如系統重啓,日光節約等。
可以指博客由Ayende有關的一些問題與錯誤使自己的調度。 Rotten scheduling: Don’t roll your own
而不是滾動自己的計時器,你可以使用Quartz.NET來承載服務。它運行良好,並具有一些附加功能,如追趕(如果您需要)以及提供服務的能力。
嗯 - 這聽起來不錯,但我看了一下頁面,它沒有太多的信息,你有代碼示例嗎? **編輯** - [發現](http://quartznet.sourceforge.net/tutorial/lesson_1.html) – 2012-08-12 01:11:52
根據您想要運行的內容,將其構建爲控制檯應用程序並讓Windows任務計劃程序隨時運行它可能會更好。 – 2012-08-12 01:02:07
@你能否接受Adil的回答?這工作正常,也很好的解決方案。 :)因爲這個問題是未被回答的類別。 +1你的問題和'Adil'的答案。有用:))))。, – RajeshKdev 2014-04-10 09:21:08