我正在執行備份程序我已經完成了GUI。現在我想要做功能需求。每個備份都可以有計劃。每個星期日或星期一都有預定義的設置,但用戶也可以指定他自己的時間表。爲備份程序執行調度程序
因爲我從來沒有做過這樣的事情,所以我想知道一個好的方法是每x個小時或幾天運行一次備份。我正在考慮使用線程或寫一個服務,但這兩個字段對我來說都是全新的。這裏最好的方法是什麼?
我正在執行備份程序我已經完成了GUI。現在我想要做功能需求。每個備份都可以有計劃。每個星期日或星期一都有預定義的設置,但用戶也可以指定他自己的時間表。爲備份程序執行調度程序
因爲我從來沒有做過這樣的事情,所以我想知道一個好的方法是每x個小時或幾天運行一次備份。我正在考慮使用線程或寫一個服務,但這兩個字段對我來說都是全新的。這裏最好的方法是什麼?
如果線程開發和服務開發都是全新的,那麼我認爲你會努力以有用的方式實現這一點。即使如此......
調度程序類型的應用程序最好作爲服務運行,否則您需要用戶登錄才能運行應用程序。服務獨立於登錄的用戶運行。
但是,由於這個原因,服務沒有用戶界面,因此您的GUI需要將計劃詳細信息打包到某個配置文件中,然後將服務發送給重新加載該配置文件,以便該服務知道該做什麼以及該做什麼。
該服務通常會產生一個工作線程來完成幾乎所有工作,並且該工作線程需要能夠響應正在關閉的服務(請參閱AutoResetEvent
以瞭解如何在線程間完成此操作)。然後,線程將等待,直到事件或適當的時間到達,然後做任何事情。
這些都不是很複雜,但我建議你先做一些深入的多線程編程。
好吧,所以我有點理解你的帖子,不清楚的是服務怎麼知道該怎麼做?在我的程序中,可以說我有一個將當前時間寫入文件的函數。但是,如果我沒有登錄並且沒有執行該程序,該服務如何知道該功能的外觀和工作原理?或者我可以在沒有任何用戶登錄的情況下從服務執行程序? – LeonidasFett
你可以在沒有任何人登錄的情況下從服務中執行程序。如果它執行的程序有一個用戶界面,那麼它將遇到問題,但是如果它只是默默地做某事,那麼這將工作正常。 – 2013-07-02 10:15:01
我同意ColinM,服務最適合調度程序類型的應用程序。 您必須將服務與應用程序相結合,以按計劃的時間間隔運行您的代碼。 有關更多詳細信息,請參閱文章 - http://msdn.microsoft.com/en-us/magazine/cc163821.aspx
備份程序是Web應用程序還是Winform? – user2323308
不要重新發明輪子:http://quartznet.sourceforge.net/ –