我正在开发一个使用Quartz Scheduler的C#项目。在这个项目中有一个简单的形式。在这个表单上有一个按钮,我用它来创建一个调度程序和一个触发器,然后开始一个工作。
private void startBtn_Click(object sender, EventArgs e)
{
IScheduler firstScheduler = new StdSchedulerFactory().GetScheduler();
firstScheduler.Start();
IJobDetail jobDetail = JobBuilder.Create<AcquireLogsJob>()
.WithIdentity("acquireLogsJobId", "acquireLogsGroupId")
.Build();
jobDetail.JobDataMap.Add("reader", readerToUse);
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("acquireLogsTriggerId")
.StartNow()
.ForJob(jobDetail)
.WithCronSchedule("0 0/" + sampleTime.Value + " * * * ?")
.Build();
firstScheduler.ScheduleJob(jobDetail, trigger);
}
我用名字读者向工作发送一个参数。我用另一个按钮停止了关闭调度程序的工作。
private void stopBtn_Click(object sender, EventArgs e)
{
if (firstScheduler != null)
{
firstScheduler.Shutdown(true);
}
}
虽然传递给jobdetail的参数需要关闭,但我的需求是:或者在关闭调度程序之前我想要检索我传递给作业的对象阅读器,或者替代工作注意到关闭并关闭它读者。 我怎么能这样做?谢谢
答案 0 :(得分:0)
。
检索所有工作并找到你给读者写的工作
或
定义Schedulerlistener类以实现ISchedulerListenr接口
在SchedulerShuttingdown()方法中检索作业
答案 1 :(得分:0)
感谢您的回复,我按照ScheduleListener的方式实现ISchedulerListener接口,然后我将我的调度程序添加到侦听器
scheduler.ListenerManager.AddSchedulerListener(mySchedListener);
一切正常。
:)