.net 定时任务调度
前段时间开发个项目需要自定义时间定时发送邮件,此处使用了Quartz 定时任务,在此记录下:
/// <summary>
/// 创建定时任务
/// </summary>
/// <param name="checkData">报告生成时间</param>
/// <param name="timer">报告发送使劲</param>
public void CreateTimingJob(DateTime checkData, DateTime timer)
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler scheduler = sf.GetScheduler();//创建调度实例
//job 名称 命名规则:JobSendEmailTimer+ 报告生成时间
string JobName = "JobSendEmailTimer" + checkData.ToShortDateString().ToString();
//创建任务实例
IJobDetail job = JobBuilder.Create<SendEmailJob>().WithIdentity(JobName, "JobSendEmailTimer").
UsingJobData("reportGenerationDate", checkData.ToShortDateString()) //传参
.Build();
var seconds=timer.Second;
var minutes = timer.Minute;
var hours = timer.Hour;
var day = timer.Day;
var month = timer.Month;
var year = timer.Year; var timerSetting = seconds + " " + minutes + " " + hours + " " + day + " " + month + " " + "? " + year;
// 0 0 0 0 0 0 0 秒 分 时 日 月 周 年
ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds()).WithCronSchedule(timerSetting).Build();
scheduler.ScheduleJob(job,trigger);
scheduler.Start(); }
public class SendEmailJob:IJob
{
public void Execute(IJobExecutionContext context)
{ //获取传入的参数数据
string data = context.MergedJobDataMap.GetString("reportGenerationDate"); ReportController reportController = new ReportController(); reportController.SendEmailTimer(data);
} }
//删除定时任务
public ApiResult<string> Delete(int id)
{
if (id > )
{
var result = DeleteEntity(id);
//在这里获取数据库定时任务配置记录
var sql = $@"select * from TimerConfig s where s.Id={id}";
var timerResult= DbHelper.GetModel<TimerConfig>(sql);
if (timerResult != null)
{
//job 命名规则
var JobName = "JobSendEmailTimer"+timerResult.ReportGeneratedDate.ToShortDateString().ToString();// TriggerKey triggerKey = new TriggerKey(JobName, "JobSendEmailTimer");
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler scheduler = sf.GetScheduler();
scheduler.PauseTrigger(triggerKey);//停止触发器
scheduler.UnscheduleJob(triggerKey);//移除触发器
scheduler.DeleteJob(new JobKey(JobName, "JobSendEmailTimer"));//删除任务
} return result;
}
return ApiResult<string>.Failed("删除失败!");
}
.net 定时任务调度的更多相关文章
- #研发中间件介绍#定时任务调度与管理JobCenter
郑昀 最后更新于2014/11/11 关键词:定时任务.调度.监控报警.Job.crontab.Java 本文档适用人员:研发员工 没有JobCenter时我们要面对的: 电商业务链条很长,业 ...
- Java定时任务调度详解
前言 在实际项目开发中,除了Web应用.SOA服务外,还有一类不可缺少的,那就是定时任务调度.定时任务的场景可以说非常广泛,比如某些视频网站,购买会员后,每天会给会员送成长值,每月会给会员送一些电影券 ...
- Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用]
Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用] tip:只需要配置xml文件即可 1.第三方依赖包的引入 <properties> <project.bu ...
- SpringQuartz 实现定时任务调度
最近公司新项目需要用到定时器,于是研究了一下发现: Spring中使用Quartz有两种方式实现: 第一种是任务类继承QuartzJobBean 第二种则是在配置文件里定义任务类和要执行的方法,类和方 ...
- 开源一个定时任务调度器 webscheduler
在企业应用中定时任务调度的需求是必不可少的,比如定时同步数据,定时结转数据,定时检测异常等等.公司之前是在使用一款采用.net 开发的windows服务形式的定时程序,基本能满足需求,在一段时间的时候 ...
- 一文揭秘定时任务调度框架quartz
之前写过quartz或者引用过quartz的一些文章,有很多人给我发消息问quartz的相关问题, quartz 报错:java.lang.classNotFoundException quartz源 ...
- linux定时任务调度定系统——opencron
linux定时任务调度定系统——opencron https://gitee.com/terrytan/opencron/#%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83 一 ...
- python中的轻量级定时任务调度库:schedule
提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中.不过,一个小的定时脚本,要用celery的话太“重”了.所以,我找到了一个轻量级的定时任务调度的库:sch ...
- 11: python中的轻量级定时任务调度库:schedule
1.1 schedule 基本使用 1.schedule 介绍 1. 提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中. 2. 不过,一个小的定时脚本,要用 ...
- java定时任务调度工具
一.什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的时间执行次数自动执行的任务. 二.java中常用的定时任务调度工具: Timer Quartz 2.1两者区别: Timer源自jdk ...
随机推荐
- linux-在指定路径下查询文件夹是否存在
我们常常在Linux下去查找文件 find / -name 'test.py' # 在根目录下查找名为test.py的文件 但是如果用查找文件的方式去查找文件夹的话,是查不到的 find / -max ...
- 20191217-关于JPA @Query查询数据一直为空,直接在数据库里执行SQL则可以查出来
20191217-关于JPA @Query查询数据一直为空,直接在数据库里执行SQL则可以查出来 前提:数据库中查询,由于在视图中无主键概念,只是在代码中由逻辑主键.结果:数据中作为逻辑主键中有个字段 ...
- JS-正则表达式解析
正则表达式通常用于输入校验,用法示例为 if (!(/^1[345789]\d{9}$/.test($('.tel').val()))) { $.toast("手机号格式有误", ...
- 2019年百度最新Java工程师面试题
一.单选题(共27题,每题5分) 1若下列所用变量均已经正确定义,以下表达式中不合法的是? A.x>>3 B.+++j C.a=x>y?x:y D.x%=4 参考答案:B 答案解 ...
- Vue 从入门到进阶之路(十三)
之前的文章我们介绍了一下 vue 中的作用域插槽,本章我们来看一下动态组件与 v-once 指令. <!DOCTYPE html> <html lang="en" ...
- 多进程操作-进程队列multiprocess.Queue的使用
一.ipc机制 进程通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁 queue 下面拿代码来实现Queue如何使用: 案例一: from multiprocessing import Q ...
- Access Grid Control Properties 访问网格控件属性
In this lesson, you will learn how to access the properties of a list form's Grid Control in WinForm ...
- 前vue.js+elementui,后koa2,nodejs搭建网站
1,安装 nodejs,npm 2,使用 npm 安装 vue,vue-cli 3,使用脚手架搭建项目,添加依赖:axios,vue-router,elementui,vuex 等 4,建立 rout ...
- Python 元組 Tuple
元組 Tuple 宣告 元組是用逗號分隔的一列值: >>> t = 'a',1,'b',2,'c',3>>> t('a', 1, 'b', 2, 'c', 3)&g ...
- Spring Boot 2 + jpa + mysql例子
Spring Data框架为数据访问提供了一个通用的模型,无论访问哪种数据库,都可以使用同样的方式,主要有以下几个功能:(1)提供数据与对象映射的抽象层,同一个对象,可以被映射为不同数据库的数据:(2 ...