2010-02-05 72 views
4

這是兩者的更好,如果我必須執行0800-1700hrs之間的清理任務之間運行的週期性。清理程序應每隔30分鐘進行一次。Windows應用程序或Windows服務0800-1700

我可以把一個計時器在Windows應用程序,它會激發每30分鐘檢查一次,如果在該時間範圍,調用清理例程或做同樣的事情作爲Windows服務

或窗口調度器踢每30分鐘和應用程序將檢查的時間和確定其時間範圍內,做清理下車..

回答

2

你應該看看石英企業調度程序(開源)爲.NET 。你可以在Spring.NET網站上找到它。

我個人認爲建設一個利用石英企業調度會實現你所問及將在Windows調度的獨立的一個整潔的方式windows服務。在我的公司,Windows調度程序在包括服務器在內的每臺計算機上都被禁用,因爲一些病毒會利用它來擴展自己

19

爲了保持簡單,我將創建一個基本的控制檯應用程序來執行所需的清理。這個應用程序中不會有計時器/日程安排代碼。

我會再建立一個窗口如期按要求的時間/間隔運行它。另外(正如Fredrik在評論中所說的),如果需要,您可以輕鬆地手動運行控制檯應用程序。

我不會建議創建一個Windows服務,除非你需要時沒有人登錄到運行任務,但你還需要應對來自交互式用戶根據不同的權限運行。另外,當沒有人登錄時,計劃任務可以運行(感謝Rob)。

+2

+1,同樣的KISS方法,但9秒後=) – 2010-02-05 13:36:50

+0

+1這也有一個好處,你可以很容易地手動觸發它,以防在某些時候需要這樣做。 – 2010-02-05 13:40:38

+0

很好的觸摸魯本斯.. – ltech 2010-02-05 13:40:57

0

其他人說的。

唯一需要注意的是,如果您需要通過某種類型的界面管理任務計時(例如,商業運營商希望它從700開始運行,或者他們希望能夠禁用該任務)。在這種情況下,您可以通過Power Shell以編程方式操作任務計劃程序,或者讓它檢查標記以查看它是否應該運行。

1

你的權衡是:

  1. 的Windows應用程序。需要有人登錄並且該應用程序正在運行。

  2. 控制檯應用程序W/Windows調度。需要有人登錄。

  3. Windows服務。如果您不需要訪問登錄人員桌面,並且無論是否有人登錄,都需要它運行,那麼這是唯一的選擇。