Asp.net mvc 3 停止Quartez.net调度程序
我有一个web应用程序,我想实现我正在使用Quartez.Net库的调度器 我在Global.asax中向应用程序添加了以下代码Asp.net mvc 3 停止Quartez.net调度程序,asp.net-mvc-3,quartz.net,Asp.net Mvc 3,Quartz.net,我有一个web应用程序,我想实现我正在使用Quartez.Net库的调度器 我在Global.asax中向应用程序添加了以下代码 protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes);
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
MyScheduler.StartScheduler();
}
我创建了以下类来定期开始我的工作
public class MyScheduler
{
public void StartScheduler()
{
// First we must get a reference to a scheduler
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler();
// computer a time that is on the next round minute
DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
// define the job and tie it to our HelloJob class
IJobDetail job = JobBuilder.Create<MyJob>()
.WithIdentity("job1", "group1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithDailyTimeIntervalSchedule(
x => x.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(14, 41))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(14,43))
.WithIntervalInSeconds(30))
.Build();
// Tell quartz to schedule the job using our trigger
sched.ScheduleJob(job, trigger);
// Start up the scheduler (nothing can actually run until the
// scheduler has been started)
sched.Start();
}
}
公共类MyScheduler
{
公共无效StartScheduler()
{
//首先,我们必须获得对调度程序的引用
isSchedulerFactory sf=新StdSchedulerFactory();
isScheduler sched=sf.GetScheduler();
//计算机是下一轮的时间
DateTimeOffset运行时=DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
//定义作业并将其绑定到HelloJob类
IJobDetail job=JobBuilder.Create()
.WithIdentity(“工作1”、“组1”)
.Build();
ITrigger trigger=TriggerBuilder.Create()
.WithIdentity(“触发器1”、“组1”)
.使用DailyTimeIntervals时间表(
x=>x.StartingDailyAt(一天的时间、小时和分钟(14,41))
.EndingDailyAt(一天的时间、小时和分钟(14,43))
.间隔秒(30))
.Build();
//告诉quartz使用触发器安排作业
sched.ScheduleJob(作业,触发器);
//启动计划程序(在
//调度程序(已启动)
sched.Start();
}
}
我想知道,如果我让调度程序运行而不停止它,是否有任何问题,因为您正在运行调度程序,所以它应该是这样工作的。 您必须知道,您的应用程序可能会因为不活动而关闭,因此您的计划程序将无法工作。
.感谢LeftyX发表的这篇有用的博文