当前位置: 移动技术网 > IT编程>开发语言>c# > Quartz.Net使用教程

Quartz.Net使用教程

2019年12月26日  | 移动技术网IT编程  | 我要评论
Quartz.Net使用教程 在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要Quartz.Net了。 Quartz.Net是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。 Quartz.N ...

quartz.net使用教程

在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要quartz.net了。

quartz.net是纯净的,它是一个.net程序集,是非常流行的java作业调度系统quartz的c#实现。

quartz.net一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。功能齐全体现在触发器的多样性上面,即支持简单的定时器,也支持cron表达式;即能执行重复的作业任务,也支持指定例外的日历;任务也可以是多样性的,只要继承ijob接口即可。

对于小型应用,quartz.net可以集成到你的系统中,对于企业级系统,它提供了routing支持,提供了group来组织和管理任务,此外还有持久化、插件功能、和故障迁移等满足不同应用场景的需要。

我们使用的是当前最新版本2.4.0进行演示。(注意:高版本不适合当前教程)添加引用以后,来创建一个job类

 

 

 

 

 1        static void main(string[] args)
 2         {
 3             //1.首先创建一个作业调度池
 4             ischedulerfactory schedf = new stdschedulerfactory();
 5             //2.实例化调度器工厂
 6             ischedulerfactory schedulefactory = new stdschedulerfactory();
 7             //3.实例化调度器
 8             ischeduler scheduler = schedulefactory.getscheduler();
 9 
10             //4.创建一个作业
11             ijobdetail job1 = jobbuilder.create<class1>()
12                 .withidentity("demojob1", "groupa")
13                 .build();
14 
15             //5.1:第一种方法直接写死多少秒执行一次
16             //itrigger trigger1 = triggerbuilder.create()//创建一个触发器
17             //    .withidentity("demotrigger1", "groupa")
18             //    .startnow()
19             //    .withsimpleschedule(b => b.withintervalinseconds(5)//5秒执行一次
20             //    .repeatforever())//无限循环执行
21             //    .build();
22 
23             //5.2推荐:第二种使用cron表达式
24             //在线生成cron表达式: http://cron.qqe2.com/ 
25             string corn = "*/10 * * * * ?";
26             itrigger trigger1 = triggerbuilder.create()
27                .withidentity("demotrigger1", "groupa")
28               .withcronschedule(corn)//每一小时执行一次
29               .build();
30 
31             //6.添加参数(键值对),如果不需要传参则忽略这一步
32             //方法内获取你传的参数: string name = context.trigger.jobdatamap.getstring("name");
33             trigger1.jobdatamap.add("name", "刘玄德");
34 
35             //7.把作业,触发器加入调度器
36             scheduler.schedulejob(job1, trigger1);
37             //8.开始运行
38             scheduler.start();
39         }

以上就是最简单的quartz的使用事例

  2.下面是我个人的一点扩展

1             type type = type.gettype("test1.testcase");//获取类 ""里为 命名空间.类名
2             object obj = activator.createinstance(type);//这里创建
3             //4.创建一个作业
4             ijobdetail job2 = jobbuilder.create(obj.gettype())
5                 .withidentity("demojob1", "groupa")
6                 .build();
7   //适合已经存在的方法动态添加定时任务

 

1             //适合在不改变代码的情况下,动态添加要定时执行的方法(前面是文件物理地址(可以使用映射将虚拟地址转换成物理地址) ,后面是命名空间加类名)
2             object obj = assembly.loadfile(@"d:\普通文件袋\测试\classlibrary2\bin\debug\classlibrary2.dll").createinstance("classlibrary2.class2");
3             //4.创建一个作业
4             ijobdetail job2 = jobbuilder.create(obj.gettype())
5                 .withidentity("demojob1", "groupa")
6                 .build();

 

3.quartz.net 部署在iis上,防止被动态回收(个人建议不要使用iis服务器

 

 

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网