• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

在ASP.NETCOREWebAPI中使用Quartz.Net执行定时任务

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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)
        {
//你需要定时执行的任务 SendEmail email
= new SendEmail(); string[] emailList = new string[] { "[email protected]"}; foreach (var item in emailList) { email.Send_Email("定时邮件提醒", "BUG处理", item); } } }

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
  这样子,一般情况下程序池就不会被自动回收了,后台一些简单的计算线程就会正常工作

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap