c# Quartz.net的简单封装
分享一个以前封装的Quartz.net类。
新建一个QuartzClass类库项目。nuget控制台输入

添加Quartz.net的引用。
我们新建一个JobBase.cs文件,里面有一个Run方法。之后所有的Job都需继承这个基类,并实现Run方法。
namespace LY.QuartzClass
{
public abstract class JobBase
{
public abstract void Run(); }
}
之后新增一个JobInstance.cs类。这个类主要实现IJob接口。
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LY.QuartzClass
{
public class JobInstance : IJob
{
public void Execute(IJobExecutionContext context)
{
IDictionary<string, object> jobs = context.JobDetail.JobDataMap;
if (jobs != null)
{
foreach (var item in jobs.Values)
{
try
{
JobBase jobObj = item as JobBase;
jobObj.Run();
}
catch
{
}
}
}
}
}
}
在JobInstance类的Execute方法中,我们从JobDataMap中取出JobBase实体,并执行Run方法。
下面我们新增一个JobManager.cs类,类内只有一个简单的AddJob方法
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LY.QuartzClass
{
public class JobManage
{
IScheduler schedudler;
public JobManage()
{
schedudler = StdSchedulerFactory.GetDefaultScheduler();
schedudler.Start();
}
public void AddJob<T>(int Second) where T : JobBase
{ JobBase jbobj = Activator.CreateInstance<T>();
IDictionary<string, object> jbData = new Dictionary<string, object>();
jbData.Add("name", jbobj); IJobDetail job1 = JobBuilder.Create<JobInstance>()
.SetJobData(new JobDataMap(jbData)).Build(); ITrigger trigger1 = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(Second)
.RepeatForever()).Build(); schedudler.ScheduleJob(job1, trigger1); } public void AddJob<T>(string rule) where T : JobBase
{
JobBase jbInstance = Activator.CreateInstance<T>();
IDictionary<string, object> jbData = new Dictionary<string, object>();
jbData.Add("name", jbInstance); IJobDetail job1 = JobBuilder.Create<JobInstance>()
.SetJobData(new JobDataMap(jbData)).Build(); ITrigger trigger1 = TriggerBuilder.Create()
.StartNow()
.WithCronSchedule(rule).Build(); schedudler.ScheduleJob(job1, trigger1);
}
}
}
在AddJob时,将Job传入JobData中。
下面我们进行调用Test。
新建一个窗体项目,并添加对LY.QuartzClass项目的引用。
新增三个Job类,继承自JobBase
public class FirstJob : JobBase
{
public override void Run()
{
Console.WriteLine(DateTime.Now.ToString());
}
}
public class SecondJob : JobBase
{
public override void Run()
{
Console.WriteLine(DateTime.Now.ToString() + ":Hello");
}
}
public class ThirdJob : JobBase
{
public override void Run()
{
Console.WriteLine(DateTime.Now.ToString() + ":CronTest");
}
}
在窗体中进行调用
private void button1_Click(object sender, EventArgs e)
{
JobManage job = new JobManage();
job.AddJob<FirstJob>();
job.AddJob<SecondJob>();
job.AddJob<ThirdJob>("0/5 0-58 9 * * ?");
}
结果如下:

c# Quartz.net的简单封装的更多相关文章
- quartz.net插件类库封装(含源码)
1.前言 目录: 1.quartz.net任务调度:源码及使用文档 2.quartz.net插件类库封装 最近项目需要做一写任务作业调度的工作,最终选择了quartz.net这个插件,它提供了巨大的灵 ...
- Quartz.Net 组件的封装使用Quartz.AspNetCore
Quartz.Net 组件的封装使用 Quartz.Net是面向.NET的一款功能齐全的开源作业调度组件,你可以把它嵌入你的系统中实现作业调度,也可以基于Quartz.Net开发一套完整的作业调度系统 ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- iOS开发——UI篇OC篇&UITableView简单封装
UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
随机推荐
- data-ajax="false"
转自:https://yq.aliyun.com/ziliao/265393 最近在做一个项目,由于涉及到跨平台性,所以采用了jquerymobile这个框架,在开发过程中,一开始为了图测试方便,采用 ...
- Django 新手图文教程 (转)
简约而不简单的 Django 新手图文教程 环境:windows7,python3.5.1,pycharm专业版,Django 1.10版,pip3 一.Django简介 百度百科:开放源代码的Web ...
- Java的SSH网站
1.框架 strusts2 + Hibernate + spring 2.图片 图1-1 网站结构 图1-2 java代码结构 3.源代码 3.1 UserAction.java package co ...
- spring中bean 的属性id与name
- js是函数式的面向对象编程语言
js是函数式的面向对象编程语言,而非类式的面向对象编程语言
- flume 转
http://blog.csdn.net/xiao_jun_0820/article/details/38111305
- RGB颜色核对的网址
http://www.917118.com/tool/color_3.html 首页 人民币大写转换 颜色总览 颜色中文名称对照表 CMYK颜色对照表 RGB颜色对照表 色阶板 颜色代码表 调色板 ...
- 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述
本文节选自<Android Studio实用指南> 作者: 毕小朋 目前本书已上传到百度阅读, 在百度中搜索[Anroid Studio实用指南]便可以找到本书. Android Stud ...
- c++ 命令模式(command)
命令模式的有点: 1.能够容易地设计一个命令队列: 2.在需要的情况下,可以比较容易地将命令记入日志. 3.可以容易的实现对请求的撤销和重做. 4.由于加进新的具体命令类不影响其他的类,因此增加新的具 ...
- 微信小程序(一)基本知识初识别
最近微信圈里小程序很火的样子,以前小程序刚开始的时候研究了一下,多日没关注发现一些东西都淡忘了,最后决定还是记录下来的好. 毕竟好记星比不上烂笔头嘛~