当前位置:网站首页>.Net Core 下使用 Quartz —— 【7】作业和触发器之简单触发器
.Net Core 下使用 Quartz —— 【7】作业和触发器之简单触发器
2022-04-23 05:55:00 【番茄大侠本尊】
1、为特定时间建立触发器,不要重复
//在某个时间点执行一次,不重复
ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartAt(DateTime.Parse("2020-10-27 15:41"))
.Build();
2、每隔3秒触发一次,重复三次(触发4次)
//每隔3秒触发一次,重复三次
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger3", "group1")
.StartAt(DateTime.Parse("2020-10-27 15:48")) // 如果不写开始时间,将从当前时间开始
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(3)
.WithRepeatCount(3)) // 写的3次,但是会触发4次(算上最开始的一次)
.Build();
3、在未来5秒触发一次
//在未来5秒触发一次
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger5", "group1")
.StartAt(DateBuilder.FutureDate(5, IntervalUnit.Second))
.Build();
4、每5s执行一次,直到22点
//每5s执行一次,直到22点
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger7", "group1")
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(5)
.RepeatForever())
.EndAt(DateBuilder.DateOf(22, 0, 0))
.Build();
5、从下一分钟的头部开始,每5秒执行一次
//从下一分钟的头部开始,每5秒执行一次
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger8")
.StartAt(DateBuilder.EvenMinuteDate(null))
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(5)
.RepeatForever())
.Build();
完整代码:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
//注册调度器工厂
services.AddSingleton<ISchedulerFactory>(new StdSchedulerFactory());
}
HomeController.cs
using Microsoft.AspNetCore.Mvc;
using Quartz;
using Quartz.Impl.Calendar;
using System;
using System.Threading.Tasks;
namespace QuartzLearn.Controllers
{
public class HomeController : Controller
{
//调度器工厂
private readonly ISchedulerFactory _schedulerFactory;
//构造函数注入
public HomeController(ISchedulerFactory schedulerFactory)
{
//注入调度器工厂
_schedulerFactory = schedulerFactory;
}
public async Task<IActionResult> Index()
{
IScheduler scheduler = await _schedulerFactory.GetScheduler();
await scheduler.Start();
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "jobGroup1")
.UsingJobData("name", "zhangsan")
.Build();
//在某个时间点执行一次,不重复
//ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()
// .WithIdentity("trigger1", "group1")
// .StartAt(DateTime.Parse("2020-10-27 15:41"))
// .Build();
//每隔3秒触发一次,重复三次
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger3", "group1")
// .StartAt(DateTime.Parse("2020-10-27 15:48")) // 如果不写开始时间,将从当前时间开始
// .WithSimpleSchedule(x => x
// .WithIntervalInSeconds(3)
// .WithRepeatCount(3)) // 写的3次,但是会触发4次(算上最开始的一次)
// .Build();
//在未来5秒触发一次
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger5", "group1")
// .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Second))
// .Build();
//每5s执行一次,直到22点
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger7", "group1")
// .WithSimpleSchedule(x => x
// .WithIntervalInSeconds(5)
// .RepeatForever())
// .EndAt(DateBuilder.DateOf(22, 0, 0))
// .Build();
//从下一分钟的头部开始,每5秒执行一次
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger8")
.StartAt(DateBuilder.EvenMinuteDate(null))
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(5)
.RepeatForever())
.Build();
await scheduler.ScheduleJob(job, trigger);
return View();
}
}
[DisallowConcurrentExecution]
[PersistJobDataAfterExecution]
public class HelloJob : IJob
{
public string Name { private get; set; }
public async Task Execute(IJobExecutionContext context)
{
await Console.Out.WriteLineAsync($"This is HelloJob {DateTime.Now}");
}
}
}
版权声明
本文为[番茄大侠本尊]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Tomato2313/article/details/109312555
边栏推荐
猜你喜欢

FOC SVPWM函数PWMC_SetPhaseVoltage解析

解析psd文件,并映射成组件

记第一次使用阿里字体图标库

【ES6】 Promise相关(事件循环,宏/微任务,promise,await/await)

Set up a personal blog of jpress

Detailed explanation and application of PN junction and diode principle

深蓝学院激光slam 理论与实践 第三章激光雷达去畸变 作业习题

MOS管特性和导通过程

浮点数双精度,单精度以及半精度知识总结

FOC SVPWM function pwmc_ Setphasevoltage parsing
随机推荐
Krypton zeal
QT icon application
Mysql中的索引与视图
【正河源刀具相关】
【ES6】 Promise相关(事件循环,宏/微任务,promise,await/await)
谈谈v-if显示隐藏问题
Joseph sequence segment tree o (nlogn)
2022LDU寒假训练-程序补丁
v-for下定时给图片添加动画
Set up a personal blog of jpress
查漏补缺(二)
C language advanced notes 3
C language code specification
赛氪-zeal
微信小程序之 js 时间戳/1000 转换 秒,六个小时后,一天后,本周五 选项计算时间
SQLite3 encrypted version
金额输入框,用于充值提现
VHDL finite state machine (FSM) code example
欢迎使用Markdown编辑器
C语言 #和##的使用