.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 ...
随机推荐
- 易优CMS:channel的基础用法
[基础用法] 名称:channel 功能:易优常用标记,可以循环嵌套标签.通常用于网站导航以获取站点栏目信息,方便网站会员分类浏览整站信息 语法: {eyou:channel type='top' r ...
- POJ-2018 Authors Register Update your info Authors ranklist
Best Cow Fences Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16945 Accepted: 5425 ...
- view WITH CHECK OPTION where-clause violation(查看与检查选项where-子句违反)
创建视图的语句是设置了 WITH CHECK OPTION 这个条件; 创建视图时,sql语句是这样写的: CREATE OR REPLACE VIEW RZ_TST_VIEW AS WHER ...
- 100本Python机器学习、深度学习电子书,免费送!
此套电子书收集于网络,如有侵权请联系删除!!! 此套电子书仅用于个人学习,请勿用于商业获利,造成后果自负!!! 这套电子书包括:机器学习.深度学习.数据科学入门.神经网络等 获取资源地址:链接: ht ...
- 【C#】学习笔记(3) 关于Events使用的小Demo
关于Events事件的简单Demo. 目录结构: Program.cs using System; namespace EventsDemo { class Program { static void ...
- Angular中使用bootstrap样式
Angular中使用bootstrap样式 Angular中引入bootstrap的方法 方法1:在Angular.json中的styles数组中添加bootstrap路径 如下所示: " ...
- es6 之class介绍
class ECMAScript 2015 中引入的 JavaScript 类实质上是 JavaScript 现有的基于原型的继承的语法糖.类语法不会为JavaScript引入新的面向对象的继承模型. ...
- 从0系统学Android-2.6Activity间数据传递
本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 2.3.4 向下一个 Activity 传递数据 前面学习了使用 Intent 来启动一个 Activity ,其 ...
- Python的range、enumerate和zip函数用法
range函数可创建一个整数列表.如果需要知道当前元素在列表中的索引,推荐用enumerate代替range.zip函数用于同时遍历多个迭代器. 一.range 函数 range函数可创建一个整数列表 ...
- YARN HA部署架构
hadoop001: zk rm(zkfc线程) nm hadoop002: zk rm(zkfc线程) nm hadoop003: zk nm RMStateStore: 存储在ZK的/rmstor ...