C# 如何在Quartz中重新安排触发器
我正在用C#中的石英制作背景工作。这是我的密码:C# 如何在Quartz中重新安排触发器,c#,quartz-scheduler,C#,Quartz Scheduler,我正在用C#中的石英制作背景工作。这是我的密码: public class BackgroundConfig { private IScheduler scheduler; public BackgroundConfig() { scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); } public void ScheduleP
public class BackgroundConfig
{
private IScheduler scheduler;
public BackgroundConfig()
{
scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
}
public void ScheduleParser()
{
IJobDetail job = JobBuilder.Create<ParseJob>()
.WithIdentity("Parser", "Job")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("ParserTrigger", "Trigger")
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(4, 0))
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
如您所见,有一个名为
RescheduleJob(triggerKey,newTrigger)
的函数,但我不知道如何从另一个类获取ParserTrigger
的触发器键。请帮帮我。非常感谢。从mermory,您可以执行以下操作:
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
var trigger = scheduler.GetTrigger("ParserTrigger","Trigger");
scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);
(注意-未测试!)抱歉,已删除“全局”命名空间。同样,这是未经测试的,但希望能为您指明正确的方向。对不起,您能看看
GetTrigger
签名吗?它只接受TriggerKey
,不接受触发器名称和组。根据文档,这在第2版中发生了更改-因此,请查看您的代码并传入密钥。我知道我必须传入密钥,但当我在另一个类中时,我不知道如何获取密钥,不是BackgroundConfig
类。假设BackgroundConfig
已经完成了设置,那么在另一个类中,您将获得我在回答中所示的DefaultScheduler,并再次按字符串获取触发器,如图所示
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
var trigger = scheduler.GetTrigger("ParserTrigger","Trigger");
scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);