2011-02-17 38 views
0

我有一個應用程序是一個數據輪詢器/更新程序,並且有大量的If/Thens圍繞它是否在某個時間點上。最好的方式來花時間在C#中運行決策#

換句話說,這個程序從調度器運行多個時間表,每次都傳遞一個操作參數。從那裏,第一個檢查是檢查當前的小時和分鐘,並由此程序決定是否適合運行數據輪詢器。

現在你可能會想知道爲什麼如果我按照計劃運行,那麼我是否關心它是什麼時間,爲什麼不在每個時間間隔都運行?那麼這個案例中的數據源來自我公司的另一個團隊,並且他們有一個總督就其所需點擊次數。他們不能與兩者合理,所以我限制了我有機會返回數據的人數。

所以回到問題中,在大多數情況下,我是在一天一次更新源數據集之後。目前我以5分鐘的間隔運行,但只在晚上8點以後纔會尋找新的數據。

我的問題是,我有所有這些令人討厭的if/then語句將當前時間與設置值進行比較,然後總是讓我認爲我應該讓它們在運行時可配置,這會導致配置代碼和最後我有一個老鼠的代碼巢。

有沒有更好的模式,我沒有想到,或某種類型的包裝是爲這樣的問題而構建的?

+0

也許石英網的工作http://quartznet.sourceforge.net/ – kenny 2011-02-17 14:18:03

回答

0

這裏是什麼,我已經使用:

與任務的計劃對象做和時間去做(或時間列表做到這一點)。

收集列表中的所有任務,並每隔五分鐘閱讀一次該列表,以檢查是否應該運行一些任務。

這應該會減少If/then語句,並且使單元測試更容易。

希望這有助於 /莫滕

+0

是的,這是更多我想到的。任務列表會減少If/Thens的大小,謝謝,很好的建議。 – 2011-02-17 14:41:43

4

看一看Quartz.Net。這已經做到了你所需要的,並提供了一個不錯的API。

+0

非常感謝。這將節省數小時 – Morten 2011-02-21 14:59:34

0

廣東話你使用Windows「計劃」的任務只是運行一個參數你的代碼?讓Windows調度程序處理所有的時間問題,並在適當的時候運行你的代碼。

這就是我們在這裏如何解決類似的問題。