[英]Get list of background jobs in IQuartzScheduleJobManager
我們在PostInitialize
的WebModule
方法中安排后台作業,如下所示:
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.