假設我有一個帶有表的數據庫,此表中的每個記錄都與要執行的操作相對應。這個表格有一個日期時間字段,在該字段中存儲下一個動作應該執行的時刻。運行定時任務
此表正在被windows服務讀取,並且操作存儲在數據結構中。每隔幾分鐘,服務將讀取表格,並將新操作合併到數據結構中,同時創建的操作不會錯過。
每個動作都有一定的重複間隔。當某個操作已經運行時,日期時間字段會根據該時間間隔更新到下一個應該運行的時間。
現在,我在這裏想知道正確的行動方案:在給定的時間,實際開始行動的首選方式是 ?
假設我有一個應該在09:00在數據結構中運行的操作,我如何確保在09:00觸發? 我目前想要的是每分鐘檢查一次數據結構,比較當前時間和動作的計劃時間,如果它們匹配,則執行動作並根據其相關時間間隔更新動作的執行時間。
作爲一個數據結構,我傾向於在隊列中考慮,所以我可以在前面做下一個工作,而且只需要檢查第一個,但是隨後我需要在每次發現新操作時重新排列隊列。
我的興趣點主要是檢查是否應該執行一個動作,一個合適的數據結構將遵循的好方法。表中的操作數量非常低,不超過25個。我無法控制數據庫,因此一切都應在C#中以編程方式完成,以防您不知所措。 任何提示,經驗或意見的建議?
你 - 需要 - 一個數據庫?誰啓動計劃任務? – 2010-12-23 15:13:58
取決於系統;在一個數據庫(或類似的)你可以堅持系統狀態,以防系統崩潰。 – 2010-12-23 15:15:10
是的,需要數據庫作爲添加新操作等的中心點。當然,這只是系統的一小部分。討論的唯一問題應該是時間被檢查的方式。 – Oxymoron 2010-12-23 15:21:49