You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.0 KiB
C#

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<JobKey>.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<JobDemo>()
.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()
{
}
}
}