zoukankan      html  css  js  c++  java
  • 【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的基本实现。

  • 相关阅读:
    以最简单的方式讲HashMap
    Python获得百度统计API的数据并发送邮件
    Java反射,注解,以及动态代理
    LeetCode每天一题之两数之和
    记一次SSM项目小结(一)
    OpenStack配置串口显示虚机界面
    sqlalchemy外键和relationship查询
    sqlalchemy数据库分层操作
    数据库外键基础知识和操作(世界杯版)
    openstack ovs实现vlan组网
  • 原文地址:https://www.cnblogs.com/yanbigfeg/p/9040124.html
Copyright © 2011-2022 走看看