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以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
随机推荐
- Spring Boot启动流程详解
注:本文转自http://zhaox.github.io/java/2016/03/22/spring-boot-start-flow 环境 本文基于Spring Boot版本1.3.3, 使用了sp ...
- 在EXCEL中使用SQL语句查询
SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...
- OrderedDict 有序字典以及读取json串时如何保持原有顺序
1. OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序.比较时,OrderedDict要内容和顺序完全相同才会视为相等 import collectio ...
- iOS开发基础控件--UISegmentedControl
UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...
- dev GridControl显示标题
gridview:ShowViewCaption = TrueViewCation = "32435354354"
- (转)libvirt API的基本概念
本文摘自:http://blog.sina.com.cn/s/blog_da4487c40102v31i.html libvirt对象 libvirt的对象向外展现了虚拟化环境的所有资源.libvir ...
- Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件
最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了 只需要 改两个 参数 就可以执行了(MYLIB 和 VPATH), 代码 如下: ...
- Nginx源码完全注释(8)ngx_errno.c
errno.h中的strerror(int errno)可以确定指定的errno的错误的提示信息.在 Nginx 中,将所有错误提示信息预先存储在一个数组里,而预先确定这个数组的大小,是在自动化脚本中 ...
- Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题
在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识. 这个标识在Java读取文件的时候,不会被去掉,而且Stri ...
- Madgwick算法详细解读
Madgwick算法详细解读 极品巧克力 前言 接上一篇文章<Google Cardboard的九轴融合算法>. Madgwick算法是另外一种九轴融合的方法,广泛应用在旋翼飞行器上,效果 ...