在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、介绍:Quartz.Net主要是用来做一些周期性的工作,或者定时工作。比如每天凌晨2点执行某个方法或者调用某个接口。 2、在NuGet 包管理器中安装,搜索Quartz 安装 3、需要使用定时任务的类实现IJob接口(任务类),比如我要定时执行发送邮件 代码如下: public class WorkAbnormalAppService : IJob { /// <summary> /// 实现定时接口 /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task Execute(IJobExecutionContext context) { 4、创建一个任务调度的类 (任务调度类) IJobDetail job_Work = JobBuilder.Create<WorkAbnormalAppService>() 中的 WorkAbnormalAppService填你的任务类名
namespace WAP.WorkAbnormals { public class JobSchedulerWork { public static async void Work() { //调度器工厂 ISchedulerFactory Work = new StdSchedulerFactory(); //调度器 IScheduler schedulers_work = await Work.GetScheduler(); await schedulers_work.GetJobGroupNames(); /*-------------计划任务代码实现------------------*/ //创建任务 IJobDetail job_Work = JobBuilder.Create<WorkAbnormalAppService>() .WithIdentity("TimeTriggerddd", "TimeGroupdd") .Build(); //创建触发器 2点一分时被执行 ITrigger trigger9 = TriggerBuilder.Create().WithCronSchedule("0 01 02 * * ?").WithIdentity("TimeTriggerddd", "TimeGroupdd").Build(); //每隔多久执行一次 这个是每隔多久执行一遍 //ITrigger trigger9 = TriggerBuilder.Create().WithIdentity("TimeTriggerddd", "TimeGroupdd").WithSimpleSchedule(t => t.WithIntervalInSeconds(1200).RepeatForever()).Build(); //添加任务及触发器至调度器中 await schedulers_work.ScheduleJob(job_Work, trigger9); /*-------------计划任务代码实现------------------*/ //启动 await schedulers_work.Start(); } } } 5、然后到 Startup.cs 类中设置一下;(我这用的是asp.net core web api) public IServiceProvider ConfigureServices(IServiceCollection services) { // 定时执行考勤异常方法 JobSchedulerWork.Work(); } 6 、考虑到IIS服务器的回收机制,需要设置一下IIS回收 在IIS中找到这个站点所用的程序池,点击“高级设置...” 在打开的列表中更改以下设置:
回收——固定时间间隔(分钟) 改为 0
——虚拟/专用内存限制(KB) 改为 0
进程模型——闲置超时(分钟) 改为 0
这样子,一般情况下程序池就不会被自动回收了,后台一些简单的计算线程就会正常工作
|
请发表评论