1、在Global.asax.cs中添加代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
ISchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = factory.GetScheduler(); IJobDetail job = JobBuilder.Create<ScheduledJob>().WithIdentity( "job1" , "group1" ) .Build(); //DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow); ITrigger trigger = TriggerBuilder.Create() .WithIdentity( "trigger1" , "group1" ) .WithCronSchedule( "0/5 * * * * ?" ) //5秒执行一次 //.StartAt(runTime) .Build(); scheduler.ScheduleJob(job, trigger); scheduler.Start(); |
2、增加文件ScheduledJob.cs:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Quartz; using Common.Logging; using Quartz.Job; using FWMemberAdmin.Common; namespace FWMemberAdmin.Common { public class ScheduledJob:IJob { public void Execute(IJobExecutionContext context) { myLogs.AddLog( "test" , "管理员" , "开始" ); string result = ExecProc.CalcDay(); myLogs.AddLog( "test" , "管理员" , "结束" ); } } } |
然后运行网站,结果并没有自动执行job。我哪个地方出问题了吗?
试试这个
1 ITrigger trigger = TriggerBuilder.Create() 2 .WithIdentity("trigger1", "group1") 3 .StartNow() //从现在开始 4 .WithCronSchedule("0/5 * * * * ?") //5秒执行一次 5 .Build();
估计是
你的//.StartAt(runTime) 这个被注释掉了 你可以传个特定的时间进去runTime
或者直接用 .StartNow() //从现在开始
不知道能不能帮上
另外 Global.asax内 还要加个
1 protected void Application_End(object sender, EventArgs e) 2 { 3 // 在应用程序关闭时运行的代码 4 if (scheduler != null) 5 { 6 scheduler.Shutdown(true); 7 } 8 }