diff --git a/src/QuartzHostedService/IJobRegistratorExtensions.cs b/src/QuartzHostedService/IJobRegistratorExtensions.cs index 6698539..27e4cdf 100644 --- a/src/QuartzHostedService/IJobRegistratorExtensions.cs +++ b/src/QuartzHostedService/IJobRegistratorExtensions.cs @@ -35,6 +35,33 @@ namespace QuartzHostedService return jobRegistrator.RegiserJob(triggers()); } + public static IServiceCollection AddQuartzJobDetail(this IServiceCollection services, Func detail) + { + services.AddSingleton(provider => new ScheduleJob(detail(), new List())); + return services; + } + public static IServiceCollection AddQuartzJob(this IServiceCollection services, string identity) where TJob : class + { + return services.AddQuartzJob(identity, null); + } + + public static IServiceCollection AddQuartzJob(this IServiceCollection services, string identity, string description) where TJob : class + { + if (!services.Any(sd => sd.ServiceType == typeof(TJob))) + { + services.AddTransient(); + } + var jobDetail = JobBuilder.Create(typeof(TJob)).WithIdentity(identity).WithDescription(description).Build(); + services.AddSingleton(provider => new ScheduleJob(jobDetail, new List())); + return services; + } + + + public static IServiceCollection AddQuartzJobDetail(this IServiceCollection services, IJobDetail detail) + { + services.AddSingleton(provider => new ScheduleJob(detail, new List())); + return services; + } public static IServiceCollection AddQuartzJob(this IServiceCollection services) where TJob : class { services.AddTransient(); @@ -49,6 +76,22 @@ namespace QuartzHostedService { return app.UseQuartzJob(new TriggerBuilder[] { triggerBuilder_func() }); } + public static IApplicationBuilder UseQuartzJob( + this IApplicationBuilder app,string JobKey, + Func triggerBuilder_func) + where TJob : class, IJob + { + var _scheduleJobs = app.ApplicationServices.GetService>(); + var job = from js in _scheduleJobs where js.JobDetail.JobType == typeof(TJob) && js.JobDetail.Key.Name == JobKey select js; + if (job.Any()) + { + var scheduleJob = job.First(); + var lstgs = (List)scheduleJob.Triggers; + lstgs.Add(triggerBuilder_func().ForJob(scheduleJob.JobDetail).Build()); + } + return app; + } + public static IApplicationBuilder UseQuartzJob( this IApplicationBuilder app, TriggerBuilder triggerBuilder)