2011-07-22 43 views
1

我的問題非常簡單。 我有一個應該每天自動執行一次的應用程序。我有這樣的情景沒有現成的經驗(我前一段時間與IBM CONTROL-M的工作,但猜測這是方式更完整,複雜和昂貴=))執行計劃任務的方法 - Windows/.NET

我想到了兩個可能的解決方案:

  • 在Windows任務計劃程序中創建一個任務,它將執行應用程序;
  • 將該應用程序實現爲一個可全天候運行的窗口服務,但只能根據當前時間執行所需的操作。

哪種方法的優點/缺點?

是否有另一種方法可以做到這一點?

在此先感謝。

+2

我信徒你的意思是Windows任務計劃程序,而不是Windows任務管理器。我編輯了這個問題來反映這一點。 – Amr

+0

看起來更適合[超級用戶](http://superuser.com/)。 –

回答

5

如果只執行一次一天(左右),那麼就去做爲由Windows任務調度執行的常規命令行應用程序。任務調度器已經具有確定何時啓動程序,傳入參數以及與任務調度相關的其他任何信息所需的全部UI。

做這種類型的函數作爲Windows服務的唯一真正原因是它需要比每分鐘一次更高的執行分辨率。然而,windows服務的主要缺點是你必須管理多久/何時啓動它的邏輯。另一個原因是應用程序始終在運行,如果您的代碼存在問題,則可能會泄漏內存。

+2

+1。我的想法確切。對於每天一次的任務,任務調度程序比使用代碼中的Timer更容易,更清潔。在進行故障排除時,寫入服務也很痛苦 - 在Visual Studio中調試服務非常困難。 (我確信有一種方法,但我沒有發現像在Visual Studio中簡單運行它那麼簡單)。僅僅從編碼/調試的角度來看,我會避開這種情況下的服務。現在,如果每分鐘甚至一小時一次,我可能會走另一條路線。 – David

+0

構建由任務計劃程序使用的應用程序具有其他應用程序也可以按需使用的優點。 – Amr

1

在Unix/Linux上,您可以使用cron作業計劃任務來執行任務。 MS Windows的版本稱爲任務計劃程序並且它已經是a service that run 24/7 and performs the needed actions depending on the time.

Create a repeating task with the Task Scheduler運行您的應用程序。創建,安裝和配置服務應用程序並不是微不足道的。與創建標準的Forms或命令行應用程序相比,這是一個更爲複雜的過程,無論如何您都不需要這樣做。