Quartz.Net在停止之前从调度程序检索对象

时间:2014-01-01 23:34:25

标签: c# quartz-scheduler quartz.net

我正在开发一个使用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的参数需要关闭,但我的需求是:或者在关闭调度程序之前我想要检索我传递给作业的对象阅读器,或者替代工作注意到关闭并关闭它读者。 我怎么能这样做?谢谢

2 个答案:

答案 0 :(得分:0)

在关机(true)方法之前

检索所有工作并找到你给读者写的工作

定义Schedulerlistener类以实现ISchedulerListenr接口

在SchedulerShuttingdown()方法中检索作业

答案 1 :(得分:0)

感谢您的回复,我按照ScheduleListener的方式实现ISchedulerListener接口,然后我将我的调度程序添加到侦听器

scheduler.ListenerManager.AddSchedulerListener(mySchedListener);

一切正常。

:)