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

【Quartz】定时器初步实验(一)以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不。第一步:创建项目创建一个新项目,可以是ASP.NE

大家好,又见面了,我是你们的朋友全栈君。

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

第一步:创建项目

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

 <span role="heading" aria-level="2">【Quartz】定时器初步实验(一)

 

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

 <span role="heading" aria-level="2">【Quartz】定时器初步实验(一)

 

第二部:引用

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

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

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

Install-Package Quartz

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

 <span role="heading" aria-level="2">【Quartz】定时器初步实验(一)

 

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

 <span role="heading" aria-level="2">【Quartz】定时器初步实验(一)

第三步:创建任务

我们添加一个任务类然后实现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秒

<span role="heading" aria-level="2">【Quartz】定时器初步实验(一)

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154481.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue路由懒加载实现_vue路由懒加载实现原理

    vue路由懒加载实现_vue路由懒加载实现原理某些情况下,一个页面的path路径可能是不确定的,比如我们进入用户界面时,希望是如下的路径:/user/aaaa或/user/bbbb。p除了有前面的/user之外,后面还跟上了用户的ID。这种path和Component的匹配关系,我们称之为动态路由(也是路由传递数据的一种方式)。1、配置router2、使用路由3、创造用户组件并使用传进来的用户信息在compute中用this.$route.params.userId,但是mustache语法中直接$route.pa

    2022年10月7日
    3
  • html超链接样式「建议收藏」

    html超链接样式「建议收藏」a:link,定义正常链接的样式;a:visited,定义已访问过链接的样式;a:hover,定义鼠标悬浮在链接上时的样式;a:active,定义鼠标点击链接时的样式。

    2022年7月19日
    24
  • phy芯片测试寄存器_MII的PHY芯片上100M调试总结

    phy芯片测试寄存器_MII的PHY芯片上100M调试总结严重声明 本人以无野心搞其他 此篇是作为一名业余网络爱好者所学所遇所想 学习交流之用 与工作无关 亦没有他心 实为学习进程之步骤 无论学习还是工作都要认真对待 工作就是工作 爱好永远是爱好 泾渭分明了 首先要致谢 TreyParker 是他推荐的一篇帖子 解开了 3 个日夜来的困惑 最近在焊接 MII 的 PHY 芯片的时候总是满心欢喜的希望自己焊接完毕一 ping 就可以通了 但是万万没想到的是盼来了 time

    2025年7月11日
    3
  • 不重启redis更改密码

    不重启redis更改密码如果以前给 redis 设置过密码 那么需要验证密码 才能用其它 redis 命令 AUTH 假设以前 redis 密码为 通过 AUTH 验证密码登录 验证成功会返回 OKCONFIGSETr 设置新的 redis 密码 CONFIGGETreq 查看新的密码

    2025年8月28日
    0
  • 39、文件的加密

    39、文件的加密

    2021年6月18日
    111
  • pycharm导入numpy出错_pycharm安装numpy很慢

    pycharm导入numpy出错_pycharm安装numpy很慢今天在使用pycharm写代码时,调用了Numpy这个库,但是报错了,提醒了Nomodulenamed’numpy’。最后知道了一个快速的解决办法:1.在pycharm里:点击file–&gt;settings:2.点击project–&gt;projectinterpreter3.然后点击右边的+号进入一个添加库的的界面,然后搜索你需要的库,在右下角点击安装,然后等待安装,安装…

    2022年8月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号