簡體   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