2009-09-03 155 views

回答

36

更好的解決方案,讓Windows爲您使用Scheduled Tasks

如果它只需要每天執行一次,那麼我會去做這件事。即使谷歌做它;)

編輯:

要回答的評論,它是作爲Fredrik說。它是一個高級選項,您可以在任務設置時打開該選項,其中包含一個名爲「Run only if logged on」的複選框,該複選框在開始時爲false。

+0

我推薦!對於我的公司來說,目前這是最好的解決方案。 – Zanoni 2009-09-03 13:11:29

+3

這絕對是要走的路;那麼你的應用程序將不會使用任何內存,而只是在等待明天運行。 – 2009-09-03 13:11:57

+0

將C#服務更改爲Windows應用程序no forms。 – Zanoni 2009-09-03 13:12:39

4

編寫一個控制檯應用程序或相當的程序,並使用Windows調度程序(或現在稱之爲...)來每天運行它。

1

爲什麼不設置此爲計劃任務運行。讓它執行然後退出。設置Windows以便在每天凌晨3點作爲計劃任務啓動進程。

3

如需靈活的解決方案,您可以使用this。這不是Windows服務,但可以輕鬆將其合併到一個。或者你可以考慮Quartz.NET這被認爲是工業實力(Java版本當然是)。

+0

+1的Quartz.NET參考 - 這將是解決自定義解決方案中調度需求的正確和強大的確實選擇(也應該首選的手放在你提到的有限的自定義cron上,使用Quartz非常容易),但是對於手頭上使用Task Scheduler的任務,按照接受的答案來看,肯定是一種可行的方法。 – 2009-09-11 14:03:05

2

其他答案都很好。我想我要指出的是,

比較DateTime.Now與凌晨3點

是一個壞的解決方案,即使你的睡眠對每個檢查之間的一段時間,因爲它浪費了系統資源的不必要的(不僅在反覆檢查時間,而且在程序的內存使用情況中)。

3

我的計劃任務順利進行備份,但我有一個忠告......

計劃任務,如果你註銷不執行。我不確定這是否可以過度使用,但是由於Windows自動更新,重新啓動並且坐等待我登錄,因此我沒有被執行任務。

我禁用了自動更新 - Windows應該首先詢問。

另一個考慮因素是3AM是許多用戶通常會註銷的時間。

+0

這就是我在想什麼......我已經嘗試了計劃任務,並且在服務器重啓後沒有任何開始......謝謝! – Bigballs 2009-09-03 13:49:23

+0

我必須說,我從來沒有自己的問題。總是爲我工作100%。 – 2009-09-03 13:52:32

2

如果您每晚都在等待一個文件,而不是擔心它到達的時間,那麼只需在事件發生時觸發一個事件即可。

看:

System.IO.FileSystemWatcher

File System Watcher on MSDN

+0

+1好的一堂,謝謝:) – 2010-02-17 07:53:35

相關問題