4

我正在尝试获取特定组的所有使用 Quartz 调度程序注册的作业。这是我的一段代码

CustomSchdularFactory.getSchedulerInstance().getJobKeys(groupEquals(group));

group是一个字符串变量,其中包含我要获取其关联作业的组的名称。在使用上面的代码时,我收到以下错误

The method getJobKeys(GroupMatcher<JobKey>) in the type Scheduler is not applicable for the arguments (GroupMatcher<Key<Key<T>>>)

我不确定为什么会发生此错误,因为我从 Quartz 官方文档中获取了参考

列出工作

4

3 回答 3

6

使用 jobGroupEquals 而不是 groupEquals

CustomSchdularFactory.getSchedulerInstance().getJobKeys(jobGroupEquals(group));

它会为你工作。

于 2012-06-27T09:09:39.857 回答
2

用它

Scheduler sched = new StdSchedulerFactory().getScheduler();

for(String group: sched.getJobGroupNames()) {
   for(JobKey jobKey : sched.getJobKeys(GroupMatcher.jobGroupEquals(group))) {
      ...
   }
}
于 2013-04-26T19:18:28.337 回答
0

在 Quartz.NET 3.0 上,我能够让它在异步模式下工作:

public static async Task RunTask() {
    StdSchedulerFactory factory = new StdSchedulerFactory(System.Configuration.ConfigurationManager.AppSettings);
    IScheduler scheduler = await factory.GetScheduler();
    await scheduler.Start();

    IReadOnlyCollection<string> jgn = await sch.GetJobGroupNames(new System.Threading.CancellationToken());
    foreach (string jno in jgn)
    {
        IReadOnlyCollection <JobKey> jk = await sch.GetJobKeys(jobGroupEquals(jno));
        foreach (JobKey j in jk)
        {
            var currentJob = await sch.GetJobDetail(j);

            //print the properties of the current job
            Console.WriteLine(currentJob.Key.Name);
            Console.WriteLine(currentJob.Description);
        }                   
    }
}   

private static GroupMatcher<JobKey> jobGroupEquals(string jno)
{
    return GroupMatcher<JobKey>.GroupEquals(jno);
}
于 2018-11-16T02:22:25.303 回答