一、简单介绍

    Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于WinForm和ASP.NET应用中。它灵活而不复杂,可以为执行一个作业而创建简单或复杂的作业调度。它有很多特征,如:数据库支持、集群、插件、支持cron-like表达式等等。

    官网:http://www.quartz-scheduler.net/

    源码:https://github.com/quartznet/quartznet

    示例:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html

    二、概念解释

    Scheduler:作业调度器。

    IJob:作业接口,继承并实现Execute, 编写执行的具体作业逻辑。

    JobBuilder:根据设置,生成一个详细作业信息(JobDetail)。

    TriggerBuilder:根据规则,生产对应的Trigger。

    三、示例程序

    3.1、界面

    新建一个WinForm程序Client,项目右键->属性->应用程序->输出类型,选择控制台应用程序。

C#作业调度Quartz.NET学习笔记

    3.2、引用

    项目右键->管理 NuGet 程序包->Quartz.NET。

C#作业调度Quartz.NET学习笔记

    3.2、作业

    新建一个类DataSyncJob并继承IJob,代表它是一个作业,同时实现Execute方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;

namespace LinkTo.Test.Quartz.Client
{
    //打上DisallowConcurrentExecution标签让Job进行单线程跑,避免没跑完时的重复执行。
    [DisallowConcurrentExecution]
    public class DataSyncJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            JobDataMap keyValuePairs = context.MergedJobDataMap;
            if (keyValuePairs.Count > 0 && keyValuePairs.Contains("Hello"))
            {
                string value = context.MergedJobDataMap.Get("Hello").ToString();
                return Task.Run(() =>
                {
                    Console.WriteLine(DateTime.Now + $" Hello:{value}" + Environment.NewLine);
                });
            }
            else
            {
                return Task.Run(() =>
                {
                    Console.WriteLine(DateTime.Now + Environment.NewLine);
                });
            }
        }
    }
}
View Code

相关文章:

  • 2022-01-04
  • 2021-04-22
  • 2022-12-23
  • 2021-05-16
猜你喜欢
  • 2022-12-23
  • 2021-07-15
  • 2021-05-15
  • 2022-01-07
  • 2021-05-13
相关资源
相似解决方案