前段时间开发个项目需要自定义时间定时发送邮件,此处使用了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 定时任务调度的更多相关文章

  1. #研发中间件介绍#定时任务调度与管理JobCenter

    郑昀 最后更新于2014/11/11 关键词:定时任务.调度.监控报警.Job.crontab.Java 本文档适用人员:研发员工   没有JobCenter时我们要面对的:   电商业务链条很长,业 ...

  2. Java定时任务调度详解

    前言 在实际项目开发中,除了Web应用.SOA服务外,还有一类不可缺少的,那就是定时任务调度.定时任务的场景可以说非常广泛,比如某些视频网站,购买会员后,每天会给会员送成长值,每月会给会员送一些电影券 ...

  3. Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用]

    Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用] tip:只需要配置xml文件即可 1.第三方依赖包的引入 <properties> <project.bu ...

  4. SpringQuartz 实现定时任务调度

    最近公司新项目需要用到定时器,于是研究了一下发现: Spring中使用Quartz有两种方式实现: 第一种是任务类继承QuartzJobBean 第二种则是在配置文件里定义任务类和要执行的方法,类和方 ...

  5. 开源一个定时任务调度器 webscheduler

    在企业应用中定时任务调度的需求是必不可少的,比如定时同步数据,定时结转数据,定时检测异常等等.公司之前是在使用一款采用.net 开发的windows服务形式的定时程序,基本能满足需求,在一段时间的时候 ...

  6. 一文揭秘定时任务调度框架quartz

    之前写过quartz或者引用过quartz的一些文章,有很多人给我发消息问quartz的相关问题, quartz 报错:java.lang.classNotFoundException quartz源 ...

  7. linux定时任务调度定系统——opencron

    linux定时任务调度定系统——opencron https://gitee.com/terrytan/opencron/#%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83 一 ...

  8. python中的轻量级定时任务调度库:schedule

    提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中.不过,一个小的定时脚本,要用celery的话太“重”了.所以,我找到了一个轻量级的定时任务调度的库:sch ...

  9. 11: python中的轻量级定时任务调度库:schedule

    1.1 schedule 基本使用 1.schedule 介绍 1. 提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中. 2. 不过,一个小的定时脚本,要用 ...

  10. java定时任务调度工具

    一.什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的时间执行次数自动执行的任务. 二.java中常用的定时任务调度工具: Timer Quartz 2.1两者区别: Timer源自jdk ...

随机推荐

  1. OpenCV-3.4.3图像通道处理

    图像通道处理 图像读取和处理都是按BGR通道顺序进行的 #include <iostream> #include <opencv2/opencv.hpp> #include & ...

  2. Java向上下转型中的陷阱{详细}

    1: 多态   多态时继承下面的产物,之所以存在向上向下转型的目的,就是解决参数传递的不变形,体现面向接口编程的重要性, 1.1 方法的多态性   ①. 方法的重载:同一个方法名称可以根据参数的类型或 ...

  3. npm报错及解决

    nodejs安装之后 无法使用 npm的解决方法 首先我们要知道Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 Node.js 使用了一个事件驱动.非阻塞式 I ...

  4. koa2 从入门到进阶之路 (六)

    之前的文章我们介绍了一下 koa post提交数据及 koa-bodyparser中间件,本篇文章我们来看一下 koa-static静态资源中间件. 我们在之前的目录想引入外部的 js,css,img ...

  5. CSS3动画的使用

    0921自我总结 CSS3动画的使用 一.动画的创建 @keyframes规则是创建动画 浏览器兼容 1.@keyframes myfirst 2.@-webkit-keyframes myfirst ...

  6. Add an Item to the Navigation Control 将项目添加到导航控件

    In this lesson, you will learn how to add an item to the navigation control. For this purpose, the N ...

  7. [a0003] <创作> 全局视图索引

    100篇博文再考虑 需求: 包含随笔.转载文章,能够容易区分

  8. Zookeeper学习(一)

    shell角度 API角度 Zookeeper可单节点,可分布式 作用: distributed coordination(分布式协调) 同一时间只有一个对外提供服务,另外的就是standy. 当ac ...

  9. SQL注入:DNS注入

    DNS注入原理: 通过我们构造的数据,访问搭建好的DNS服务器,查看DNS访问的日志即可获取我们想要得到的数据. DNS注入使用场景: 在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这 ...

  10. Day12- Python基础12 线程、GIL、Lock锁、RLock锁、Semaphore锁、同步条件event

    http://www.cnblogs.com/yuanchenqi/articles/6248025.html  博客地址 本节内容: 1:进程和线程的说明 2:线程的两种调用方式 3:threadi ...