using System.Configuration; using System.Threading; using System.Threading.Tasks; using Abp.Dependency; using Abp.Domain.Services; using Abp.Domain.Uow; using Abp.Quartz; using Abp.Threading; using Quartz; namespace ContractService.Quartz { public class TimeJobManger:DomainService { public TimeJobManger(IQuartzScheduleJobManager jobManager, IIocManager iocManager) { JobManager = jobManager; IocManager = iocManager; } public IQuartzScheduleJobManager JobManager { get; } private IIocManager IocManager { get; } public void StartKpNotify() { Logger.Info("TimeJob-【StartKpNotify】"); var cron = ConfigurationManager.AppSettings["QuartJob.KpNotify.Cron"] ?? "0 5 0,12 * * ? *"; JobManager.ScheduleAsync(job=>job.WithIdentity("TimeKeyPointJob", "Notify").WithDescription("关键点通知任务"), trigger=> trigger.StartNow().WithCronSchedule(cron)); Task.Run(async () => { using (IocManager.ResolveAsDisposable().Object.Begin()) { await IocManager.Resolve().KpNotify(); } } ); } } }