首先,你需要通过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的文档来了解更多详细信息和示例。