如何检查石英调度程序C#中是否正在运行特定作业

编程入门 行业动态 更新时间:2024-10-10 13:21:48
本文介绍了如何检查石英调度程序C#中是否正在运行特定作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用石英调度程序,根据触发器的用户输入来调度写入文件的作业.我想检查一下该作业是否仍在stop()方法中运行.如何检查作业是否仍在运行?

I am using quartz scheduler to schedule a job of writing to a file depending on user input on basis of triggers. I want to check if the job is still running in the stop() method. How can I check if the job is still running?

public class JobScheduler { static StdSchedulerFactory schedulerFactory = new StdSchedulerFactory(); public IScheduler scheduler = schedulerFactory.GetScheduler().Result; public void start() { scheduler.Start(); IJobDetail jobDetail = JobBuilder.Create<FileWritingJob>().WithIdentity("FileWriteJob","FileWriteGroup").Build(); string date_time = System.Configuration.ConfigurationManager.AppSettings["datetime"]; System.Diagnostics.Debug.WriteLine(date_time); DateTime dateTime = DateTime.Parse(date_time); System.Diagnostics.Debug.WriteLine("Parse datetime:"+dateTime); string frequency= System.Configuration.ConfigurationManager.AppSettings["frequency"]; System.Diagnostics.Debug.WriteLine("Frequency:" + frequency); if (frequency.Equals("hourly", StringComparison.InvariantCultureIgnoreCase) && !frequency.Equals("default")) { ITrigger hourlyTrigger = TriggerBuilder.Create().WithIdentity("hourlyTrigger").WithCronSchedule("0 " + dateTime.Minute + " " + dateTime.Hour + "/1 1/1 * ? *").StartAt(DateBuilder.DateOf(dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Day, dateTime.Month, dateTime.Year)).Build(); scheduler.ScheduleJob(jobDetail, hourlyTrigger); } else if (frequency.Equals("daily", StringComparison.InvariantCultureIgnoreCase) && !frequency.Equals("default")) { ITrigger dailyTrigger = TriggerBuilder.Create().WithIdentity("dailyTrigger").WithCronSchedule("0 " + dateTime.Minute + " " + dateTime.Hour + " 1/1 * ? *").StartAt(DateBuilder.DateOf(dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Day, dateTime.Month, dateTime.Year)).Build(); scheduler.ScheduleJob(jobDetail, dailyTrigger); } else if (frequency.Equals("weekly", StringComparison.InvariantCultureIgnoreCase) && !frequency.Equals("default")) { ITrigger weeklyTrigger = TriggerBuilder.Create().WithIdentity("weeklyTrigger").WithCronSchedule("0 " + dateTime.Minute + " " + dateTime.Hour + " 1/7 * ? *").StartAt(DateBuilder.DateOf(dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Day, dateTime.Month, dateTime.Year)).Build(); scheduler.ScheduleJob(jobDetail, weeklyTrigger); } } public void stop() { scheduler.Shutdown().ConfigureAwait(false).GetAwaiter().GetResult(); } }

推荐答案

在Quartz 2.x中,您可以从调度程序中获取所有正在执行的作业,我没有在3.x中对其进行过测试,但是我确定它是一样.

In Quartz 2.x you can get all executing jobs from the scheduler, i didn't tested it with 3.x but i'm sure it is the same.

var executingJobs = scheduler.GetCurrentlyExecutingJobs();

更多推荐

如何检查石英调度程序C#中是否正在运行特定作业

本文发布于:2023-11-25 20:53:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1631303.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:作业   正在运行   程序   石英

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!