#region 添加任务计划 /// <summary> /// 添加任务计划 /// </summary> /// <returns></returns> private void AddScheduleJob(List<AutoJobEntity> entityList) { try { foreach (AutoJobEntity entity in entityList.Where(p => p.JobStatus == StatusEnum.Yes.ParseToInt())) { if (entity.StartTime == null) { entity.StartTime = DateTime.Now; } DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(entity.StartTime, 1); if (entity.EndTime == null) { entity.EndTime = DateTime.MaxValue.AddDays(-1); } DateTimeOffset endRunTime = DateBuilder.NextGivenSecondDate(entity.EndTime, 1); var scheduler = JobScheduler.GetScheduler(); IJobDetail job = JobBuilder.Create<JobExecute>().WithIdentity(entity.JobName, entity.JobGroupName).Build(); job.JobDataMap.Add("Id", entity.Id); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .StartAt(starRunTime) .EndAt(endRunTime) .WithIdentity(entity.JobName, entity.JobGroupName) .WithCronSchedule(entity.CronExpression) .Build(); //避免系统启动就把全部任务启动一次。 ((CronTriggerImpl)trigger).MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing; scheduler.ScheduleJob(job, trigger); scheduler.Start(); } } catch (Exception ex) { LogHelper.Write(ex); } } #endregion
原文:https://www.cnblogs.com/panjinzhao/p/14595484.html