using Hangfire; namespace Kean.Infrastructure.Hangfire { /// /// 抽象定时作业建造者 /// public abstract class RecurringJobBuilder { /// /// 创建定时作业 /// internal abstract void Build(); } /// /// 定时作业建造者 /// /// 定时作业类型 public sealed class RecurringJobBuilder : RecurringJobBuilder where T : IRecurringJob { private readonly string _cronExpression; /// /// 初始化 Kean.Infrastructure.Hangfire.RecurringJobBuilder 类的新实例 /// /// cron 表达式 internal RecurringJobBuilder(string cronExpression) { _cronExpression = cronExpression; } /* * 实现 Kean.Infrastructure.Hangfire.RecurringJobBuilder.Build 方法 */ internal override void Build() { var recurringJobId = typeof(T).Name; RecurringJob.RemoveIfExists(recurringJobId); if (_cronExpression != null) { RecurringJob.AddOrUpdate(recurringJobId, recurringJob => recurringJob.Execute(), _cronExpression); } } } }