Quartz.NET 的使用
先貼使用代碼:
1 using Quartz;
2 using Quartz.Impl;
3 using Quartz.Logging;
4 using System;
5 using System.Collections.Specialized;
6 using System.Threading.Tasks;
7
8 namespace QuartzTest
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 GetTask().GetAwaiter().GetResult();
15 }
16 public static async Task GetTask()
17 {
18 // construct a scheduler factory
19 NameValueCollection props = new NameValueCollection
20 {
21 { "quartz.serializer.type", "binary" }
22 };
23 ISchedulerFactory factory = new StdSchedulerFactory(props);
24 IScheduler scheduler =await factory.GetScheduler();
25
26 IJobDetail job = JobBuilder.Create<HelloJob>()
27 .WithIdentity("job1", "group1")
28 .Build();
29
30 ITrigger trigger = TriggerBuilder.Create()
31 .WithIdentity("trigger1", "group1")
32 .WithCronSchedule("0/5 * * * * ?")
33 .Build();
34
35 await scheduler.ScheduleJob(job, trigger);
36 await scheduler.Start();
37
38 // some sleep to show what's happening
39 await Task.Delay(TimeSpan.FromSeconds(60));
40
41 // and last shut down the scheduler when you are ready to close your program
42 await scheduler.Shutdown();
43 }
44 }
45
46 public class HelloJob : IJob
47 {
48 public async Task Execute(IJobExecutionContext context)
49 {
50 await Console.Out.WriteLineAsync("Hello Quartz.Net..." + DateTime.Now + Environment.NewLine);
51 }
52 }
53
54
55
56 //class Program
57 //{
58 // static void Main(string[] args)
59 // {
60 // GetTask().GetAwaiter().GetResult();
61 // }
62
63 // public static async Task GetTask()
64 // {
65 // // construct a scheduler factory
66 // NameValueCollection props = new NameValueCollection
67 // {
68 // { "quartz.serializer.type", "binary" }
69 // };
70 // StdSchedulerFactory factory = new StdSchedulerFactory(props);
71
72 // // get a scheduler
73 // IScheduler scheduler =await factory.GetScheduler();
74 // await scheduler.Start();
75
76 // // define the job and tie it to our HelloJob class
77 // IJobDetail job = JobBuilder.Create<HelloJob>()
78 // .WithIdentity("myJob", "group1")
79 // .Build();
80
81 // // Trigger the job to run now, and then every 40 seconds
82 // ITrigger trigger = TriggerBuilder.Create()
83 // .WithIdentity("myTrigger", "group1")
84 // .StartNow()
85 // .WithSimpleSchedule(x => x
86 // .WithIntervalInSeconds(10)
87 // .RepeatForever())
88 // .Build();
89
90 // // Tell Quartz.Net to schedule the job using our trigger
91 // await scheduler.ScheduleJob(job, trigger);
92
93 // // some sleep to show what's happening
94 // await Task.Delay(TimeSpan.FromSeconds(60));
95
96 // // and last shut down the scheduler when you are ready to close your program
97 // await scheduler.Shutdown();
98 // }
99 //}
100
101 //public class HelloJob : IJob
102 //{
103 // public async Task Execute(IJobExecutionContext context)
104 // {
105 // await Console.Out.WriteLineAsync("Hello Quartz.Net..." + DateTime.Now + Environment.NewLine);
106 // }
107 //}
108
109
110
111 // // Other Method
112 //class Program
113 //{
114 // static void Main(string[] args)
115 // {
116 // LogProvider.SetCurrentLogProvider(new ConsoleLogProvider());
117
118 // RunProgram().GetAwaiter().GetResult();
119
120 // Console.WriteLine("Press any key to close the application");
121 // Console.ReadKey();
122 // }
123
124 // private static async Task RunProgram()
125 // {
126 // try
127 // {
128 // NameValueCollection props = new NameValueCollection
129 // {
130 // {"quartz.serializer.type", "binary" }
131 // };
132 // StdSchedulerFactory factory = new StdSchedulerFactory(props);
133 // IScheduler scheduler = await factory.GetScheduler();
134
135 // await scheduler.Start();
136
137 // IJobDetail job = JobBuilder.Create<HelloJob>()
138 // .WithIdentity("job1", "group1")
139 // .Build();
140
141 // ITrigger trigger = TriggerBuilder.Create()
142 // .WithIdentity("trigger1", "group1")
143 // .StartNow()
144 // .WithSimpleSchedule(x => x
145 // .WithIntervalInSeconds(10)
146 // .RepeatForever())
147 // .Build();
148
149 // await scheduler.ScheduleJob(job, trigger);
150
151 // await Task.Delay(TimeSpan.FromSeconds(60));
152
153 // await scheduler.Shutdown();
154 // }
155 // catch (SchedulerException se)
156 // {
157 // await Console.Error.WriteLineAsync(se.ToString());
158 // }
159 // }
160
161 // private class ConsoleLogProvider : ILogProvider
162 // {
163 // public Logger GetLogger(string name)
164 // {
165 // return (level, func, exception, parameters) =>
166 // {
167 // if (level >= LogLevel.Info && func != null)
168 // {
169 // Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] [" + level + "] " + func(), parameters);
170 // }
171 // return true;
172 // };
173 // }
174
175 // public IDisposable OpenNestedContext(string message)
176 // {
177 // throw new NotImplementedException();
178 // }
179
180 // public IDisposable OpenMappedContext(string key, string value)
181 // {
182 // throw new NotImplementedException();
183 // }
184 // }
185 //}
186
187 //public class HelloJob : IJob
188 //{
189 // public async Task Execute(IJobExecutionContext context)
190 // {
191 // await Console.Out.WriteLineAsync("Greetings from HelloJob!");
192 // }
193 //}
194 }
參考網址:
https://www.cnblogs.com/huyong/p/11091089.html
https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html
https://www.liujiajia.me/2019/02/13/quartz-net/
Quartz.NET 的使用的更多相关文章
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- Spring Quartz实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
- topshelf和quartz内部分享
阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows ...
- Quartz.net持久化与集群部署开发详解
序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...
- Quartz.net开源作业调度框架使用详解
前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...
- quartz.net 时间表达式----- Cron表达式详解
序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...
- Quartz.NET Windows 服务示例
想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz ...
- [Quartz笔记]玩转定时调度
简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...
- 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能
Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...
随机推荐
- 汽车生产车间PMC组态画面应该怎么设计
通常我们所说的汽车制造四大工艺指的是:冲压.焊装.涂装.总装.一般来说,在汽车制造工厂,这四大工艺分别对应四大车间.本文结合一些实际应用案例,向大家展示一下 TopStack 在汽车制造业各工艺车间中 ...
- VMWare配置处理器个数和实际电脑CPU核心线程数关系
配置说明 处理器数量 :指CPU内核数量(例如:4C / 8C),并不是指CPU颗数. 每个处理的核心数量:指CPU中的线程(4C8T中的8T),并不是指核心(Core)数量. 示例配置 处理器数量 ...
- 有点儿神奇,原来vue3的setup语法糖中组件无需注册因为这个
前言 众所周知,在vue2的时候使用一个vue组件要么全局注册,要么局部注册.但是在setup语法糖中直接将组件import导入无需注册就可以使用,你知道这是为什么呢?注:本文中使用的vue版本为3. ...
- 【ASeeker】Android 源码捞针,服务接口扫描神器
ASeeker是一个Android源码应用系统服务接口扫描工具. 项目已开源: ☞ Github ☜ 如果您也喜欢 ASeeker,别忘了给我们点个星. 说明 ASeeker 项目是我们在做虚拟化分身 ...
- K-means聚类是一种非常流行的聚类算法
K-means聚类是一种非常流行的聚类算法,它的目标是将n个样本划分到k个簇中,使得每个样本属于与其最近的均值(即簇中心)对应的簇,从而使得簇内的方差最小化.K-means聚类算法简单.易于实现,并且 ...
- python重拾第十一天-RABBITMQ队列
安装python rabbitMQ module pip install pika 官网 https://pypi.python.org/pypi/pika 安装rabbit-server服务,cen ...
- 使用Python爬取公众号的合集内容
使用Python爬取公众号的合集 前言 ...最近老是更新关于博客的文章,很久没更新其他的了,然后写一下如何爬取微信公众号里面的图片吧! 先看看微信公众号的样子吧: 我爬取的是公众号的合集内容 讲解 ...
- IPv6地址的文本表示规范
背景 随着IPv6越来越普及,经常要跟IPv6地址打交道,迫切需要一个统一的IPv6地址文本表示规范. RFC4291简单的说明了如何将IPv6地址表示成文本形式,但有很多有歧义和不周全的地方. RF ...
- 在OwinSelfHost项目中获取客户端IP地址
在OwinSelfHost项目中,获取客户端的IP地址可以通过以下方法获得: base.Request.GetOwinContext().Request.RemoteIpAddress 创建一个Owi ...
- yb课堂 课程总结