2011-12-25 88 views
0

我得到了一個訂閱數據庫,我想爲每個訂閱從一次到另一個每x分鐘運行一次。在一個應用程序(.Net C#)中的計劃任務

但是每個訂閱都有自己的時間和時間+它應該每運行x分鐘應該運行哪個函數。

它可以是許多同時運行的訂閱。

也許它應該看起來像一個計劃任務,開始於一個特定的時間,並運行每x分鐘到一個特定的時間。

我希望我能描述自己想做的事情,我的英語不是最好的。

有沒有人有任何想法如何構建應用程序待辦事項?

回答

1

你可能正在描述什麼Quartz.NET可以爲你做。檢查一下,這可能值得花一些時間。

+0

測試Quartz.NET,但得到一些問題,看看你是否有任何想法:http://stackoverflow.com/questions/8639085/quartz-net-beta-throws-an-exception-when-i-try -testcode功能於自己的項目 – RickardP 2011-12-26 21:01:36

5

你有一對夫婦的選擇,在這裏:

  • 使用SQL Agent和設置jobs與所需的日程安排(當然,這是假設你正在使用SQL Server)。
  • 用定時器寫一個Windows Service,該定時器查詢數據庫並根據需要執行不同的任務。

您提到了scheduled tasks,這可能是另一種選擇,但這需要您自動設置新任務以及要運行的實際任務。這兩個方法都比較容易處理上面列出的選項。

2

我建議你使用System.Threading.Timer。要安排工作,請執行以下操作:

new Timer(_ => DoTheJob()).Change(your_interval_in_milliseconds, Timeout.Infinite); 

然後當作業完成後,使用相同的代碼安排下次運行。這會阻止同時運行同一作業的2個實例。 請讓我知道如果這沒有適當地回答你的問題。

0

所以你應該寫一些調度器。它將從隊列中取出任務並執行它們......您可以創建一個調度程序,以便例如每個任務都可以在單獨的線程中運行,並且會顯着提高性能!

相關問題