Quartz Scheduler - 触发器不引用给定的作业

Geo*_*ros 5 .net quartz-scheduler

我在我的应用程序中使用Quartz Scheduler并得到异常:Trigger没有引用给定的作业......

看着我的代码我似乎无法看出问题出在哪里.

    var schedFact = new StdSchedulerFactory();

    scheduler = schedFact.GetScheduler();

    IJobDetail dailyJob = JobBuilder.Create<PushElectricityPricesJob>()
        .WithIdentity("dailyJob", "group1")
        .Build();

    ITrigger trigger1 = TriggerBuilder.Create()
       .WithIdentity("dailyJobTrigger", "group1")
       .StartNow()
       .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(3, 0))
       .ForJob("dailyJob")
       .Build();

    scheduler.ScheduleJob(dailyJob, trigger1);

    IJobDetail monthlyJob = JobBuilder.Create<PushContributionsJob>()
        .WithIdentity("monthlyJob", "group2")
        .Build();

    ITrigger trigger2 = TriggerBuilder.Create()
        .WithIdentity("monthlyJobTrigger", "group2")
        .StartNow()
        .WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(1, 0, 0))             
        .ForJob("monthlyJob")
        .Build();

    scheduler.ScheduleJob(monthlyJob, trigger2);

    scheduler.Start();
Run Code Online (Sandbox Code Playgroud)

我确实在StackOverflow上找到了很多像这样的帖子,但是在每一个帖子上我都可以发现开发者所犯的错误或拼写错误.在这里,我只是无能为力..

任何的想法?

Geo*_*ros 11

好的发现了!

问题是因为这些团体.可以在不指定组的情况下调用WithIdentity方法,只需使用名称.

所以它变成:

IJobDetail dailyJob = JobBuilder.Create<PushElectricityPricesJob>()
    .WithIdentity("dailyJob")
    .Build();

ITrigger trigger1 = TriggerBuilder.Create()
   .WithIdentity("dailyJobTrigger")
   .StartNow()
   .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(3, 0))
   .ForJob("dailyJob")
   .Build();
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.当然,你需要为其他工作做同样的事情.