我使用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会做我期望的工作。 :) –