【发布时间】:2014-01-01 23:34:24
【问题描述】:
我正在开发一个使用 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 的参数需要关闭,但我的需要是:或者在关闭调度程序之前,我想检索我传递给作业的对象读取器,或者作业通知关闭并关闭它读者。 我怎么能这样做?谢谢
【问题讨论】:
-
我建议您在 stopBtn_Click 中关闭阅读器,因为无论如何您似乎都有它的实例变量。要么完全控制工作的打开和关闭,要么在外面处理。
标签: c# quartz-scheduler quartz.net