using System; using System.Collections.Generic; using System.Text; using Microsoft.Extensions.Logging; using Quartz; using Quartz.Impl; using Quartz.Impl.Matchers; namespace TopshelfStudy.NetCoreDemo { public class TopshelfService { public readonly IScheduler Scheduler = new StdSchedulerFactory().GetScheduler().Result; public readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public void Start() { logger.Info("服务启动"); //注册监听器 Scheduler.ListenerManager.AddSchedulerListener(new CustomSchedulerListener(Scheduler)); Scheduler.ListenerManager.AddJobListener(new CustomJobListener(), GroupMatcher.AnyGroup()); Scheduler.ListenerManager.AddTriggerListener(new CustomTriggerListener()); //添加作业 JobKey jobKey = new JobKey("demo_job", "demo_job_group"); TriggerKey triggerKey = new TriggerKey("demo_trigger", "demo_trigger_group"); JobDataMap dataMape = new JobDataMap(); IJobDetail jobDetail = JobBuilder.Create() .SetJobData(dataMape) .WithIdentity(jobKey) .Build(); //触发器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity(triggerKey) .StartNow() .WithCronSchedule("0/10 * * * * ? ") .Build(); //添加到调度器 Scheduler.ScheduleJob(jobDetail, trigger); //启动Scheduler Scheduler.Start(); } public void Stop() { if (Scheduler != null && !Scheduler.IsShutdown) { Scheduler.Shutdown(); } logger.Info("Quarzt.Net 后台服务已关闭"); logger.Info("Windows 服务停止"); } public void Pause() { } public void Continue() { } } }