2012-01-19 53 views
0

我使用Quartz.NET在我的ASP.NET應用程序作業調度和我在global.asax文件中創建一個觸發器:Quartz.Net的cron觸發C#

// Code that runs on application startup 
ISchedulerFactory schedFact = new StdSchedulerFactory(); 
// get a scheduler 
IScheduler sched = schedFact.GetScheduler(); 
sched.Start(); 
// construct job info 
JobDetail jobDetail = new JobDetail("mySendMailJob", typeof(SendMailJob)); 

SimpleTrigger trigger = new SimpleTrigger("myTrigger", 
         null, 
         DateTime.UtcNow, 
         null, 
         SimpleTrigger.RepeatIndefinitely, 
         TimeSpan.FromSeconds(60)); 

sched.ScheduleJob(jobDetail, trigger); 

此代碼工作正常,我並在每1分鐘後發射並完成我所需的工作。

我試圖用這種方式創建另一個觸發器,以便在上午10點的特定時間觸發,但它不適用於我。我也想製作失火指示。假設我的觸發器在特定時間沒有被觸發;我如何獲得失火指示來重新加載我的觸發器來完成這項工作?

ISchedulerFactory schedFact = new StdSchedulerFactory(); 
// get a scheduler 
IScheduler sched = schedFact.GetScheduler(); 
sched.Start(); 
// construct job info 
JobDetail jobDetail = new JobDetail("mySendMailJob", typeof(SendMailJob)); 

Trigger trigger2 = TriggerUtils.MakeDailyTrigger(10, 00); 

// schedule the job for execution 
//trigger2.Name = "mySendMailTrigger"; 
sched.ScheduleJob(jobDetail, trigger2); 
+2

如果你要做一個窗口服務工作的機會,然後更好地做到這一點。在ASP.NET中執行後臺任務時存在風險。閱讀http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx –

+0

Thanx Malcom對於您的建議, 但事情是IM處理ASP應用程序將在共享服務器上託管。而且我不能託管我的窗口服務,並且我希望我的例程之一在每日基礎上或根據定義的標準在指定時間內向用戶發送電子郵件。經過長時間的搜索和討論,我發現Quartz.Net會做我期望的工作。 :) –

回答

1

您可以使用一個cron觸發配方CronMaker,就這麼簡單:

0 0 10 1/1 * ? * 

,並創建一個CronTrigger類使用它,請參閱documentation,對不起,我沒有一個例子,現在,但如果你做不到,我明天就會發布。

+0

Thanx Gustavo, 我已經用Cron觸發器完成了某些事情,但有時候它沒有啓動 –