public static async Task <string> TriggerAction(this ISchedulerFactory schedulerFactory, QuartzOption quartzOption, JobAction action) { try { IScheduler scheduler = await schedulerFactory.GetScheduler(); List <JobKey> jobKeys = scheduler.GetJobKeys(GroupMatcher <JobKey> .GroupEquals(quartzOption.GroupName)).Result.ToList(); if (jobKeys == null || jobKeys.Count() == 0) { return(string.Format("未找到分组:{0}", quartzOption.GroupName)); } JobKey jobKey = jobKeys.Where(s => scheduler.GetTriggersOfJob(s).Result.Any(x => (x as CronTriggerImpl).Name == quartzOption.JobName)).FirstOrDefault(); if (jobKey == null) { return(string.Format("未找到触发器:{0}", quartzOption.JobName)); } var triggers = await scheduler.GetTriggersOfJob(jobKey); ITrigger trigger = triggers?.Where(x => (x as CronTriggerImpl).Name == quartzOption.JobName).FirstOrDefault(); if (trigger == null) { return(string.Format("未找到触发器:{0}", quartzOption.JobName)); } switch (action) { case JobAction.除: case JobAction.修改: await scheduler.PauseTrigger(trigger.Key); await scheduler.UnscheduleJob(trigger.Key); // 移除触发器 await scheduler.DeleteJob(trigger.JobKey); break; case JobAction.暂停: case JobAction.停止: case JobAction.开启: if (action == JobAction.暂停) { await scheduler.PauseTrigger(trigger.Key); } else if (action == JobAction.开启) { await scheduler.ResumeTrigger(trigger.Key); //await scheduler.ResumeTrigger(trigger.Key); } else { await scheduler.Shutdown(); } break; case JobAction.立即执行: await scheduler.TriggerJob(jobKey); break; } return(string.Format("{0}成功", action.GetEnumText())); } catch (Exception ex) { return(string.Format("{0}失败:", action.GetEnumText(), ex.Message)); } }