2017-12-21 28 views
0

에서 백그라운드 작업의 목록을 가져옵니다 :우리는이 같은 <code>WebModule</code> 방법 <code>PostInitialize</code>에서 배경 작업을 예약 IQuartzScheduleJobManager

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

우리가 어떻게 응용 프로그램 서비스에 등록 된 백그라운드 작업의 목록을 얻을 수 있습니다, 우리는 그들의 속성을 조작 할 수 있도록 ?

프로젝트 시작 템플릿은 ASP.NET Boilerplate, AngularJS 및 EntityFramework입니다.

+0

코드 형식 지정 방법 : https://stackoverflow.com/editing-help#code – aaron

답변

0

아래와 같이 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)); 
          } 
         } 
        } 
       } 
      } 

     //... 
} 
+0

환상적인 대답. – Omital

+0

당신은 환영합니다;) –