雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

Quartz.Net来实现C#中的定时任务

2024-08-31 18

首先,你需要通过NuGet包管理器或手动下载并添加Quartz.Net库到你的项目中。

using Quartz;

using Quartz.Impl;


public class MyJob : IJob

{

    public Task Execute(IJobExecutionContext context)

    {

        // 在这里编写你的任务逻辑

        Console.WriteLine("任务执行中...");

        return Task.CompletedTask;

    }

}


public class Program

{

    public static async Task Main(string[] args)

    {

        // 创建调度器

        ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

        IScheduler scheduler = await schedulerFactory.GetScheduler();


        // 启动调度器

        await scheduler.Start();


        // 创建一个作业

        IJobDetail job = JobBuilder.Create<MyJob>()

            .WithIdentity("myJob", "group1")

            .Build();


        // 创建一个触发器

        ITrigger trigger = TriggerBuilder.Create()

            .WithIdentity("myTrigger", "group1")

            .StartNow()

            .WithSimpleSchedule(x => x

                .WithIntervalInSeconds(10) // 每10秒执行一次

                .RepeatForever())

            .Build();


        // 将作业和触发器关联到调度器

        await scheduler.ScheduleJob(job, trigger);


        // 等待一段时间,让调度器执行任务

        await Task.Delay(TimeSpan.FromSeconds(60));


        // 停止调度器

        await scheduler.Shutdown();

    }

}

在上面的示例中,我们定义了一个名为MyJob的任务类,它实现了IJob接口。在Execute方法中,你可以编写你的任务逻辑。

然后,在Main方法中,我们创建了一个调度器并启动它。接着,我们使用JobBuilder创建了一个作业,并使用TriggerBuilder创建了一个触发器。这里的触发器使用了简单的重复计划,每10秒执行一次。

最后,我们将作业和触发器关联到调度器,并等待一段时间让调度器执行任务。最后,我们关闭调度器。

这只是一个简单的示例,Quartz.Net还支持更复杂的调度需求,比如指定特定的日期和时间执行任务,以及设置任务的优先级等。你可以通过查阅Quartz.Net的文档来了解更多详细信息和示例。

更新于:18天前
赞一波!

文章评论

全部评论