我使用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);
如果你要做一個窗口服務工作的機會,然後更好地做到這一點。在ASP.NET中執行後臺任務時存在風險。閱讀http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx –
Thanx Malcom對於您的建議, 但事情是IM處理ASP應用程序將在共享服務器上託管。而且我不能託管我的窗口服務,並且我希望我的例程之一在每日基礎上或根據定義的標準在指定時間內向用戶發送電子郵件。經過長時間的搜索和討論,我發現Quartz.Net會做我期望的工作。 :) –