1、Quartz.Net项目地址
源码地址:https://github.com/quartznet/quartznet
2、使用Nuget引用Quartz.NET
1)可以在Nuget包管理器中搜索 "Quartz",找到Quartz点击 "安装"
2)在Nuget包管理控制台使用下面命令安装引入
Install-Package Quartz
3)Quartz中使用的命名空间
using Quartz;
using Quartz.Impl;
2、使用Quartz.NET实现定时任务示例代码
IScheduler:与调度程序进行交互的主要API。
IJob:由您希望由调度程序执行的组件实现的接口。
IJobDetail:用于定义Jobs的实例。
ITrigger:定义将在其上执行给定Job的计划的组件。
JobBuilder:用于定义/构建JobDetail实例,该实例定义Jobs实例。
TriggerBuilder:用于定义/构建触发器实例。
1)实现IJob接口
[DisallowConcurrentExecution]
public class MessageJob : IJob
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public Task Execute(IJobExecutionContext context)
{
//Console.WriteLine("Info From HelloJob");
//Thread.Sleep(30000);
//LogHelper.WriteInfo("Info From HelloJob");
return Task.Run(() =>
{
logger.Info("MessageJob Start");
try
{
Utils.NotifyMsg();
}
catch (Exception ex)
{
logger.Error(ex.Message);
}
});
}
}
DisallowConcurrentExecution:禁止相同JobDetail同时执行,而不是禁止多个不同JobDetail同时执行。建议加上该特性,防止由于任务执行时间太长,长时间占用资源,导致其它任务堵塞。
2)使用Quartz.NET示例代码
// 构造一个调度器工厂
NameValueCollection props = new NameValueCollection
{
{ "quartz.serializer.type", "binary" }
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
// 得到一个调度器
IScheduler sched = await factory.GetScheduler();
await sched.Start();
// 定义作业并将其绑定到HelloJob类
IJobDetail job = JobBuilder.Create<MessageJob>()
.WithIdentity("myJob", "group1")
.Build();
// 触发作业现在运行,然后每40秒运行一次
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(40)
.RepeatForever())
.Build();
await sched.ScheduleJob(job, trigger);
相关文档:
.NET Core Quartz使用cron表达式实现定时任务
.NET Core(C#) System.timers.timer使用实现定时任务及示例代码
.NET Core(C#) System.Threading.timer使用实现定时任务及示例代码