zoukankan      html  css  js  c++  java
  • FluentScheduler定时器

    项目需要一个按时执行的任务,每隔几分钟执行一个,或者每隔几小时执行一次等等,这个时候就需要一个定时的功能,最简单的就是用Timer自己写一个,但是自己写的性能等各方面有可能不健全等等,而现在开源的库也越来越多,功能也越来越好,我们是一批站在巨人肩上的人,好的东西也学会用,直接拿来主义。FluentScheduler定时任务库,通过nuget引用,可以设置各种事件间隔,,超级方便简单。

    FluentScheduler定时器例子

    using FluentScheduler;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace NetFrameTest.test
    {
        public class MyRegistry : Registry
        {
            public MyRegistry()
            {
                // 每天执行一次(这里是在每天的下午 15:40 分执行),可以不用类,直接虚拟方法
                Schedule(() => Console.WriteLine("It's 15:42  now.")).ToRunEvery(1).Days().At(15, 42);
    
                // 每两秒执行一次(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)
                Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();
    
                // 每五秒执行一次(延迟一个指定时间间隔执行一次计划任务)
                Schedule<MyJob>().ToRunOnceIn(5).Seconds();
    
                // 每月执行一次(这里是在每月的第一周的周一3点执行)
                Schedule<MyJob>().ToRunNow().AndEvery(1).Months().OnTheLast(DayOfWeek.Friday).At(16, 0);
    
                // 构造函数执行
                Schedule(() => new MyOtherJob("Foo")).ToRunNow().AndEvery(2).Seconds();
    
                // 在同一个计划中执行两个(多个)任务
                Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
            }
    
        }
    
        public class MyJob : IJob
        {
            public void Execute()
            {
                Console.WriteLine($"MyJob  当前时间:{DateTime.Now}");
            }
        }
    
        public class MyOtherJob : IJob
        {
            private string Name;
            public MyOtherJob(string name)
            {
                Name = name;
            }
    
            public void Execute()
            {
                Console.WriteLine($"MyOtherJob 姓名:{Name}  当前时间:{DateTime.Now}");
            }
        }
    }

    定时任务写好之后只需要在Main中引用就可以了

    //  static void Main(string[] args)
    JobManager.Initialize(new MyRegistry());

    FluentScheduler源码地址

    https://github.com/fluentscheduler/FluentScheduler

  • 相关阅读:
    Redis集群持久化
    Redis集群介绍
    电脑CPU讲解
    Centos7 k8s v1.5.2二进制部署安装-交付jenkins到k8s集群
    Centos7 k8s v1.5.2二进制部署安装-交付dubbo服务到k8s集群准备工作
    华为云全栈产品福利来袭,终身VIP免费送!
    Centos7 k8s v1.5.2二进制部署安装-dashboard--WEB管理
    Centos7 k8s v1.5.2二进制部署安装-服务暴露ingress控制器之traefik
    简单两步禁止 iOS 系统频繁提示更新,亲测有效
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/zhao123/p/10955607.html
Copyright © 2011-2022 走看看