2011-01-05 74 views
3

我需要編寫一個工具,它將在用戶可配置的時間表上運行循環任務。我將使用C#3.5編寫它,它將在XP,Windows 7或Windows Server 2008上運行。任務大約需要20分鐘才能完成。用戶可能想要設置幾種配置:例如每日,每週和每月的週期。使用任務計劃程序不是一個選項。編寫循環任務調度程序需要幫助

用戶將通過類似於Outlook的定期約會對話框的界面安排重複。一旦他們設定了時間表,他們就會啓動它,它應該坐在系統托盤中,並在指定的時間啓動它的任務,然後發送郵件來表明它已完成。

寫這個的最好方法是什麼,以便它不會佔用資源,鎖定主機或以其他方式行事不當?

回答

4

您可以做的最好的事情是避免通過利用操作系統提供的功能重新發明輪子。請參閱Bart De Smet的文章Calling the Task Scheduler in Windows Vista (and Windows Server 2008) from managed code,瞭解C#中Windows任務調度程序的非常實用的用法。

如果出於某種原因,您必須實現您自己的服務(例如,更好地控制依賴關係),我會看看.NET兼容語言中的一些開源Cron實現。在代碼項目名爲Implementing a small Cron service in C#的代碼項目上有一篇文章,似乎這樣做。根據他的文章An Event Based Cron (Scheduled) Job In C#,看起來Bob Cravens在這方面做了一些更徹底的工作,或者至少將他的工作更詳細地記錄下來。如果你環顧四周,我確信還有其他的東西,基於Cron的東西是一個很好的起點。

+0

非常好!正是我在找什麼 – Sisiutl 2011-01-06 18:24:29

1

我會建議編寫使用一個SQLite數據庫來獲取時間表和 添加一個GUI來寫任何你需要的分貝但記得要使用

System.Timers.Timer 

,而不是

Windows服務
System.Windows.Forms.Timer 

在您的Windows服務