C# Windows服务使用Quartz定时执行
首先先在NuGet里引用Quartz包
这里要根据项目的 Framework版本来引用合适的包,不然会安装失败!
接下来创建一个名为Conf的文件来存放jobs.config,然后创建名为Jop来存放具体的服务代码
jobs.config内容根据Jop内的具体服务进行配置
标红处为具体的服务代码与服务命名
我这里是每十分钟执行一次
然后在主程序来配置调度器
//调度器。
private readonly IScheduler _scheduler;
public MedService()
{
InitializeComponent();
// this._logger = LogManager.GetLogger(this.GetType());
StdSchedulerFactory factory = new StdSchedulerFactory();
this._scheduler = factory.GetScheduler();
}
protected override void OnStart(string[] args)
{
("开始时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Log();
this._scheduler.Start();
}
protected override void OnStop()
{
("结束时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Log();
if (!this._scheduler.IsShutdown)
this._scheduler.Shutdown();
}
protected override void OnPause()
{
this._scheduler.PauseAll();
base.OnPause();
}
protected override void OnContinue()
{
this._scheduler.ResumeAll();
base.OnContinue();
}
之后安装到本机服务上
使用VS2019开发人员命令提示符(一定要使用 管理员运行)
安装命令:
installutil.exe 后面写上服务的具体路径如: D:\Demo\bin\Debug\Service.exe
卸载命令:
installutil.exe /u 后面写上服务的具体路径如: D:\Demo\bin\Debug\Service.exe
然后打开服务查看已经安装的Windows服务并运行,接下来打开VS 2019(使用 管理员运行)的调试点击 附加到进程
这里选中 显示所有用户进程,选择Windows服务,附加到进程就可以调试了
使用Quartz不能忽略的细节,一定要把jobs.config的复制到输出目录设置为始终复制
jos.config与quartz.config文件统一设置为始终复制