在 .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 中的参数来满足不同的需求。