我在ASP.NET Web应用程序中使用Quartz.NET.我将以下代码放在按钮单击处理程序中以确保它执行(用于测试目的):
Quartz.ISchedulerFactory factory = new Quartz.Impl.StdSchedulerFactory(); Quartz.IScheduler scheduler = factory.GetScheduler(); Quartz.JobDetail job = new Quartz.JobDetail("job", null, typeof(BackupJob)); Quartz.Trigger trigger = Quartz.TriggerUtils.MakeDailyTrigger(8, 30); // i edit this each time before compilation (for testing purposes) trigger.StartTimeUtc = Quartz.TriggerUtils.GetEvenSecondDate(DateTime.UtcNow); trigger.Name = "trigger"; scheduler.ScheduleJob(job, trigger); scheduler.Start();
这是"BackupJob":
public class BackupJob : IJob { public BackupJob() { } public void Execute(JobExecutionContext context) { NSG.BackupJobStart(); } }
我的问题:为什么"BackupJobStart()"没有解雇?我之前使用过类似的代码,但它运行良好.
编辑:@Andy White,我想在Global.asax的Application_Start中使用它.这不起作用,这就是为什么我把它移动到一个按钮点击处理程序来缩小问题的范围.
你有连接Quartz.NET日志吗?我曾经遇到过一个没有执行的工作的问题(我忘记了原因),但是一旦我进行了Quartz.NET日志记录,问题就显而易见了.
值得一试(如果你还没有这样做):
https://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html
http://netcommon.sourceforge.net/
http://netcommon.sourceforge.net/documentation.html
更新:只需将其添加到program.cs以启用控制台日志记录:
Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info};