.net Code 定时任务

Posted on 2023-04-24 15:17  遥远的博客  阅读(235)  评论(0编辑  收藏  举报

在 .NET Core 中,我们可以使用 Quartz.NET 来实现定时任务。下面是一个简单的例子:

首先,我们需要通过 NuGet 安装 Quartz.NET:
Install-Package Quartz

1.创建一个 Job 类,该类实现 IJob 接口,并实现 Execute 方法。该方法中编写具体的任务逻辑。

using Quartz;

public class MyJob : IJob
{
  public Task Execute(IJobExecutionContext context)
  {
    // 具体的任务逻辑
    Console.WriteLine("Hello, world!");

    return Task.CompletedTask;
  }
}

2.创建一个 Trigger,该 Trigger 规定了任务的触发方式。例如,我们可以创建一个每分钟执行一次的 Trigger:

using Quartz;

public class MyTrigger
{
  public static ITrigger Create()
  {
    return TriggerBuilder.Create()
    .WithIdentity("MyTrigger", "MyGroup")
    .StartNow()
    .WithSimpleSchedule(x => x
    .WithIntervalInSeconds(60)
    .RepeatForever())
    .Build();
  }
}

3.创建一个 Scheduler,该 Scheduler 负责管理所有的 Job 和 Trigger:

using Quartz;
using Quartz.Impl;

public class MyScheduler
{
  public static async Task Start()
  {
    // 创建 SchedulerFactory
    var schedulerFactory = new StdSchedulerFactory();

    // 创建 Scheduler
    var scheduler = await schedulerFactory.GetScheduler();

    // 创建 JobDetail
    var jobDetail = JobBuilder.Create<MyJob>()
    .WithIdentity("MyJob", "MyGroup")
    .Build();

    // 创建 Trigger
    var trigger = MyTrigger.Create();

    // 将 JobDetail 和 Trigger 绑定到 Scheduler
    await scheduler.ScheduleJob(jobDetail, trigger);

    // 启动 Scheduler
    await scheduler.Start();
  }
}

最后,在应用程序启动时调用 MyScheduler.Start 方法启动定时任务即可:
public class Program
{
  public static async Task Main(string[] args)
  {
    await MyScheduler.Start();

    // 防止应用程序退出
    await Task.Delay(-1);
  }
}

这样,我们就创建了一个每分钟执行一次的定时任务。可以根据需要修改 Trigger 中的参数来满足不同的需求。

Copyright © 2024 遥远的博客
Powered by .NET 9.0 on Kubernetes