【Quartz】定时器初步实验(一)

简介: 原文:【Quartz】定时器初步实验(一)    以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不。 第一步:创建项目 创建一个新项目,可以是ASP.NET MVC,WebForms,Winforms等多种.Net项目,这里使用的是VS2017,创建了一个MVC项目     创建完成后大致项目层级为:     第二部:引用 我们首先要在项目中引用Quartz.dll。
原文: 【Quartz】定时器初步实验(一)

    以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不。

第一步:创建项目

创建一个新项目,可以是ASP.NET MVC,WebForms,Winforms等多种.Net项目,这里使用的是VS2017,创建了一个MVC项目

 

 

创建完成后大致项目层级为:

 

 

第二部:引用

我们首先要在项目中引用Quartz.dll。

你可以去官网现在dll:https://github.com/quartznet/quartznet

也可以使用nuget管理直接在项目安装:

Install-Package Quartz

输入安装命令后出现即安装成功:

 

 

然后在引用可以看到该dll:

 

第三步:创建任务

我们添加一个任务类然后实现IJob接口:

1     public class HelloJob : IJob
2     {
3         public Task Execute(IJobExecutionContext context)
4         {
5             System.Diagnostics.Debug.WriteLine("HelloWord");
6             return Task.FromResult(true);
7         }
8     }

千万不要忘记引用命名空间哦:

using Quartz;
using System.Threading.Tasks;

第四步:创建触发器

我这里用了一个触发器接口类。直接上代码,代码理由详情注释我就不啰嗦了。

    public class SimpleExample : IExample
    {
        public virtual async Task Run()
        {
            //创建调度器
            ISchedulerFactory sf = new StdSchedulerFactory();
            IScheduler sched = await sf.GetScheduler();

            //创建任务
            IJobDetail job = JobBuilder.Create<HelloJob>()
               .WithIdentity("job1", "group1")
               .Build();

            //创建触发器
            // DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);//定义触发规则
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trg1", "group1")
                 // .StartAt(runTime)
                 .WithCronSchedule("0/5 * * * * ?")     //5秒执行一次
                .Build();
            //将任务与触发器添加到调度器中
            await sched.ScheduleJob(job, trigger);
            //启动任务
            await sched.Start();
        }
    }

第五步:也是最后一步

我们只需要调用运行就行了,我因为是试一试能不能运行,所有我直接写在了Global.asax文件的Application_Start方法里:

 protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            IExample example = ObjectUtils.InstantiateType<IExample>(typeof(SimpleExample));
            example.Run().ConfigureAwait(false);
        }

最后看一下结果吧:我设置在输出台打印“HelloWord” 每隔5秒

好了以上就是Quartz的基本实现。

 

目录
相关文章
|
开发工具
【Quartz】定时器初步实验(一)
以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不。 第一步:创建项目 创建一个新项目,可以是ASP.NET MVC,WebForms,Winforms等多种.Net项目,这里使用的是VS2017,创建了一个MVC项目     创建完成后大致项目层级为:     第二部:引用 我们首先要在项目中引用Quartz.dll。
1238 0
|
前端开发 Java 调度
Quartz 定时器任务调度
Job:是一个接口只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在 JobDataMap实例中 第一种,作业类继承自特定的基  1.8测试成功,2.0不行类:org.springframework.scheduling.
1899 0
|
Java 调度 数据库
定时组件quartz系列<二>quartz的原理
Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便。   一、核心概念   Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可。   1、Job 表示一个工作,要执行的具体内容。
1019 0
Quartz3定时任务学习之异步调度器
Quartz3定时任务学习之异步调度器 Quartz3与Quartz2的主要区别有两点: 1,Quartz3将它的资源类库拆的更细了,比如,想使用Quartz3开发,最少要引用Quartz,Quartz.Jobs,Quartz.Plugins这三个类库。 2,Quartz3整体上使用的是异步创建实例,所以我们使用时就必须要async,await的语法。 下面我们用Quartz3来做一个任务调度。
Quartz3定时任务学习之异步调度器
|
应用服务中间件
Quartz定时被二次触发的问题
其中&lt;Host/&gt;告诉tomcat,在启动的时候加载webapps下的所有项目工程文件,&lt;Context/&gt;又让tomcat再加载了一遍(一般情况下配置&lt;Context/&gt;,主要是由于想域名访问时将工程名去掉的原因配置),这种情况下会导致工程中的quartz定时被两次触发,执行两次。   &lt;Host/&gt;里面的改成 autoDeploy=
1607 0
|
负载均衡 Java Shell
定时组件quartz系列<三>quartz调度机制调研及源码分析
quartz2.2.1集群调度机制调研及源码分析引言quartz集群架构调度器实例化调度过程触发器的获取触发trigger:Job执行过程:总结:附:   引言 quratz是目前最为成熟,使用最广泛的java任务调度框架,功能强大配置灵活.
1625 0
|
调度
Quartz-错过触发机制
Quartz-错过触发机制
199 0