Quartz.NET 任务调度框架的demo实例

举报
GoodTimeGGB 发表于 2023/10/31 11:23:12 2023/10/31
【摘要】 ​ 1、新建项目简单实例,新建一个控制台程序 2、Nuget安装Quartz 3、编写代码using Quartz;using Quartz.Impl;using Quartz.Logging;using System;using System.IO;using System.Threading.Tasks;namespace QuartzDotNetDemo{ class Progr...

1、新建项目

简单实例,新建一个控制台程序

2、Nuget安装Quartz

image.png

3、编写代码

using Quartz;
using Quartz.Impl;
using Quartz.Logging;
using System;
using System.IO;
using System.Threading.Tasks;
namespace QuartzDotNetDemo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            LogProvider.SetCurrentLogProvider(new ConsoleLogProvider());
            // 获取调度程序的实例
            // 创建调度器工厂
            StdSchedulerFactory factory = new StdSchedulerFactory();
            // 创建调度器
            IScheduler scheduler = await factory.GetScheduler();
            // 启动
            await scheduler.Start();
            // 创建一个任务
            IJobDetail job = JobBuilder.Create<HelloJob>().WithIdentity("job1", "group1").Build();
            // 创建一个触发器
            ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().WithSimpleSchedule(x => x.WithIntervalInSeconds(10) // 间隔10秒执行一次
                .RepeatForever()).Build();
            // 将任务与出发器添加到调度器中
            await scheduler.ScheduleJob(job, trigger);
            // 延迟60秒后启动
            await Task.Delay(TimeSpan.FromSeconds(60));
            // 关闭
            await scheduler.Shutdown();
            Console.WriteLine("Press any key to close the application");
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 增加日志记录
    /// </summary>
    public class ConsoleLogProvider: ILogProvider
    {
        public Logger GetLogger(string name)
        {
            return(level, func, exception, parameters) =>
            {
                if(level >= LogLevel.Info && func != null)
                {
                    Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] [" + level + "] " + func(), parameters);
                    }
                    return true;
                };
            }
            public IDisposable OpenMappedContext(string key, object value, bool destructure = false)
            {
                throw new NotImplementedException();
            }
            public IDisposable OpenNestedContext(string message)
            {
                throw new NotImplementedException();
            }
        }
    /// <summary>
    /// 简单的测试
    /// </summary>
    public class HelloJob: IJob
    {
        public async Task Execute(IJobExecutionContext context)
        {
            // 输出对控制台的问候
            await Console.Out.WriteLineAsync("Greetings from HelloJob!");
        }
    }
}

4、执行效果

image.png

5、相关链接

Quartz.Net官网文档

一个简单的实例,如有帮助,欢迎点赞关注收藏!

以上就是Quartz.NET 任务调度框架的demo实例的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。