Quartz.Net的基础使用方法,多任务执行
接着上面单任务执行的代码做一下简单的扩展
主要看下面这段代码,这是Quartz多任务调度的方法,主要就是围绕这个方法去扩展:
//
// 摘要:
// Schedule all of the given jobs with the related set of triggers.
//
// 言论:
// If any of the given jobs or triggers already exist (or more specifically, if
// the keys are not unique) and the replace parameter is not set to true then an
// exception will be thrown.
Task ScheduleJobs(IReadOnlyDictionary<IJobDetail, IReadOnlyCollection<ITrigger>> triggersAndJobs, bool replace, CancellationToken cancellationToken = default);
1、首先我们建两个任务类:
using System;
using System.Threading.Tasks;
using Quartz; namespace HHF.Quartz
{
public class Task_1 : IJob
{
public Task Execute(IJobExecutionContext context)
{
return Console.Out.WriteLineAsync($"这是任务一,执行时间:{DateTime.Now}");
}
}
}
2、改造一下之前的QuartzScheduler类,添加一个GetJobs方法,生成任务集合
/// <summary>
/// 很Low的一段代码
/// </summary>
/// <returns></returns>
public List<IJobDetail> GetJobs()
{
IJobDetail job1 = JobBuilder.Create<Task_1>()
.WithIdentity("job1")
.Build();
IJobDetail job2 = JobBuilder.Create<Task_2>()
.WithIdentity("job3")
.Build();
return new List<IJobDetail>() { job1, job2 };
}
3、改造一下Run方法
/// <summary>
/// 任务调度的使用过程
/// </summary>
/// <returns></returns>
public async static Task Run()
{
// 创建scheduler的引用
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = await schedFact.GetScheduler(); // 获取job集合
var jobs = GetJobs();
// 申明一个任务与触发器映射的字典集合
var jobAndTriggerMapping = new Dictionary<IJobDetail, IReadOnlyCollection<ITrigger>>();
// 遍历任务列表
for (int i = ; i < jobs.Count; i++)
{
var job = jobs[i];
// 只读的触发器集合
var triggers = new ReadOnlyCollection<ITrigger>(
new List<ITrigger>()
{
TriggerBuilder.Create()
.WithIdentity("trigger_"+i)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(i+).RepeatForever())
.Build()
});
// 建立映射关系
jobAndTriggerMapping[job] = triggers;
}
// 将映射关系包装成制度字典集合
var readOnlyjobAndTriggerMapping = new ReadOnlyDictionary<IJobDetail, IReadOnlyCollection<ITrigger>>(jobAndTriggerMapping); /*
* 使用trigger规划执行任务job
*第二个参数replace:如果为true,则指定的触发器或者任务名称已经存在将会替换,否则将抛出异常
*/
await sched.ScheduleJobs(readOnlyjobAndTriggerMapping, true); // 启动 scheduler
await sched.Start();
}
4、查看执行结果,我们可以看到,任务一的执行间隔时间为5秒,任务二的执行间隔时间为6秒,可以正常执行。

Quartz.Net的基础使用方法,多任务执行的更多相关文章
- Quartz.Net的基础使用方法,多任务执行继续扩展
前一篇随笔讲了Quartz多任务的简单实现 Quartz.Net的基础使用方法,多任务执行 这一篇,来简单对前一篇进行一下简单的扩展 看了前一篇的代码会发现,每次新增一个任务还要去GetJobs方法里 ...
- 2019-1-29-Moq基础-判断方法被执行
title author date CreateTime categories Moq基础 判断方法被执行 lindexi 2019-01-29 16:29:57 +0800 2019-01-17 1 ...
- Quartz.Net的基础使用方法,单任务执行
1.先创建一个控制台应用程序 2.应用Quartz的NuGet包 3.编写执行任务代码 using System; using System.Threading.Tasks; using Quar ...
- Moq基础 判断方法被执行
如果想知道注入的类的某个方法被使用了几次,就可以通过 mock 提供的方法进行判断方法有没被执行或被使用多少次 本文是一个系列,具体请看 Moq基础(一) 为什么需要单元测试框架 Moq基础(二) 快 ...
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- 逆向与BOF基础——注入shellcode并执行&Return-to-libc
逆向与BOF基础--注入shellcode并执行 准备阶段 下载安装execstack. 本次实验实验的shellcode是心远的文章中生成的代码,即\x31\xc0\x50\x68\x2f\x2f\ ...
- Java 进阶7 并行优化 JDK多任务执行框架技术
Java 进阶7 并行优化 JDK多任务执行框架技术 20131114 Java 语言本身就是支持多线程机制的,他提供了 Thread 类 Runnable 接口等简单的多线程支持工 ...
- 千锋教育Vue组件--vue基础的方法
课程地址: https://ke.qq.com/course/251029#term_id=100295989 <!DOCTYPE html> <html> <head& ...
- SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流
SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...
随机推荐
- Ethical Hacking - GAINING ACCESS(13)
CLIENT SIDE ATTACKS Backdoor delivery method2 - backdooring exe downloads Backdoor any exe the targe ...
- OSCP Learning Notes - Post Exploitation(2)
Windows Post Exploitation Target Server: IE8-Win 7 VM 1. Download and upload the fgdump, PwDump7, wc ...
- PyQt5布局管理器
布局分类 绝对定位:使用move方法将空间直接定死在某个坐标,不会随着窗口大小的改变而改变 可变布局:使用各种布局管理器,实现组件的位置和大小随着窗口的变化而变化 布局管理器 QHBoxLayout: ...
- Python基础知识点:多进程的应用讲解
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:东哥IT笔记 现在很多CPU都支持多核,甚至是手机都已经开始支持多核 ...
- 题解 洛谷 P4189 【[CTSC2010]星际旅行】
一个比较直接的想法就是对每个点进行拆点,拆成入点和出点,限制放在入点和出点相连的边上,然后跑最大费用最大流即可. 但是这样复杂度无法接受,所以考虑模拟费用流来解决本题. 发现 \(H\) 都大于等于该 ...
- DNA Consensus String UVA - 1368
题目链接:https://vjudge.net/problem/UVA-1368 题意:给出一组字符串,求出一组串,使与其他不同的点的和最小 题解:这个题就是一个点一个点求,利用桶排序,求出最多点数目 ...
- 趣学Python编程PDF高清完整版免费下载|百度网盘
百度网盘:趣学Python编程PDF高清完整版免费下载 提取码:ts47 内容简介 python是一款解释型.面向对象.动态数据类型的高级程序设计语言.python语法简捷而清晰,具有丰富和强大的类库 ...
- pandas之时间数据
1.时间戳Timestamp() 参数可以为各种形式的时间,Timestamp()会将其转换为时间. time1 = pd.Timestamp('2019/7/13') time2 = pd.Time ...
- sscanf,sprintf(思修课的收获)
转载的,就是做个笔记 sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量 ...
- 02_HTML02
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"软件测试"获取视频和教程资料! b站在线视频 HTML ...