繁体   English   中英

在IQuartzScheduleJobManager中获取后台作业列表

[英]Get list of background jobs in IQuartzScheduleJobManager

我们在PostInitializeWebModule方法中安排后台作业,如下所示:

IocManager.Resolve<IQuartzScheduleJobManager>().ScheduleAsync<WorkFlowDetailNotificationWorker>(job =>
{
    job.WithIdentity("SendNotificationForRemainGardeshKarDetail", "AutoNotification")
       .WithDescription("WorkFlowsNotification");
}, trigger =>
{
    trigger.StartNow().WithSchedule(CronScheduleBuilder.CronSchedule("0 0/60 8-19 * * ?")).Build();
});

我们如何获得Application Service中已注册的后台作业的列表,以便我们可以操纵它们的属性?

我们的项目启动模板是ASP.NET Boilerplate,AngularJS和EntityFramework。

您可以在Asp.Net Boilerplate框架中获得注册到Quartz的所有作业的列表,如下所示;

    public class MySampleAppService
    {
            private readonly IAbpQuartzConfiguration _abpQuartzConfiguration;

            public MySampleAppService(IAbpQuartzConfiguration abpQuartzConfiguration)
            {
               _abpQuartzConfiguration = abpQuartzConfiguration
            }

            private void ListAllJobs()
            {
                var scheduler = _abpQuartzConfiguration.Scheduler;
                var jobGroups = scheduler.GetJobGroupNames();
                foreach (string group in jobGroups)
                {
                    var groupMatcher = GroupMatcher<JobKey>.GroupContains(group);
                    var jobKeys = scheduler.GetJobKeys(groupMatcher);
                    foreach (var jobKey in jobKeys)
                    {
                        var detail = scheduler.GetJobDetail(jobKey);
                        var triggers = scheduler.GetTriggersOfJob(jobKey);
                        foreach (ITrigger trigger in triggers)
                        {
                            Console.WriteLine(group);
                            Console.WriteLine(jobKey.Name);
                            Console.WriteLine(detail.Description);
                            Console.WriteLine(trigger.Key.Name);
                            Console.WriteLine(trigger.Key.Group);
                            Console.WriteLine(trigger.GetType().Name);
                            Console.WriteLine(scheduler.GetTriggerState(trigger.Key));

                            var nextFireTime = trigger.GetNextFireTimeUtc();
                            if (nextFireTime.HasValue)
                            {
                                Console.WriteLine(nextFireTime.Value.LocalDateTime.ToString(CultureInfo.InvariantCulture));
                            }

                            var previousFireTime = trigger.GetPreviousFireTimeUtc();
                            if (previousFireTime.HasValue)
                            {
                                Console.WriteLine(previousFireTime.Value.LocalDateTime.ToString(CultureInfo.InvariantCulture));
                            }
                        }
                    }
                }
            }

      //...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM