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#
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()
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|