2010-01-13 52 views
1
處理經常性工作與提醒

我使用Quartz.NET和現在所面臨以下任務:如何Quartz.NET

計劃作業每隔10分鐘將被解僱,與之前提醒1分鐘每次出現。

你知道是否可以設計一個觸發器來做到這一點?

我想盡量避免處理2個觸發器(一個用於提醒,一個用於工作)。

我將使用的提醒和作業一樣IStatefulJob類,在JobDataMap中加入一個布爾IsReminder

可能有一個cron COMAND要做到這一點,但是我怕我不知道任何事情的cron ...

編輯:我只是想補充的是,2觸發的解決方案工作得很好,所以這只是得到了更簡潔的代碼(和一半以上的工作在我的調度)

回答

1

爲了記錄,我會回答我自己的問題。

一種解決方案是使用兩個轉移觸發器,用時間狗屎等於要設置提醒時間:

//Let's set a recurrent task, starting 10 seconds from now, and firing every 20 seconds, with a 5 seconds reminder. 
DateTime startTime = DateTime.UtcNow.AddSeconds(10); 

SimpleTrigger remindertrigger = new SimpleTrigger("reminderTrigger", 
       null, 
       startTime.AddSeconds(-5), //Reminder time shift 
       null, 
       SimpleTrigger.RepeatIndefinitely, 
       TimeSpan.FromSeconds(20)); 


SimpleTrigger strigger = new SimpleTrigger("taskTrigger", 
       null, 
       startTime, 
       null, 
       SimpleTrigger.RepeatIndefinitely, 
       TimeSpan.FromSeconds(20)); 

現在,您可以將這些觸發器連接到兩份工作。

另一種解決方案是僅爲提醒設置觸發器,並在觸發器Execute方法內爲任務創建作業。