asp.net core webapi如何执行周期性任务

使用Api执行周期性任务

第一种,无图形化界面

新建asp.net core webapi项目,使用Nuget搜索安装Quartz包。

1.新建类,继承IJob,在实现的方法种书写需要周期性执行的事件。

js 复制代码
public class TimerWorker : IJob
  {
    public async Task Execute(IJobExecutionContext context)
    {
      //定时任务
      TLog.WriteLog("事件执行!");
    }
  }

2.编写方法类,定义事件执行方式

js 复制代码
public class SpecialWork
  {
    public static async void Work()
    {
      //调度器工厂
      ISchedulerFactory Work = new StdSchedulerFactory();
      //调度器
      IScheduler schedulers_work = await Work.GetScheduler();
      await schedulers_work.GetJobGroupNames();
      /*-------------计划任务代码实现------------------*/
      //创建任务
      IJobDetail job_Work = JobBuilder.Create<TimerWorker>()
          .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(5).RepeatForever()).Build();     //5=5秒
      //添加任务及触发器至调度器中
      await schedulers_work.ScheduleJob(job_Work, trigger9);
      /*-------------计划任务代码实现------------------*/
      //启动
      await schedulers_work.Start();
    }
  }

注意:定时执行时间格式,参考连接:https://www.cnblogs.com/wudequn/p/8506938.html

3.在启动方法中,进行设置,.net 6中在program.cs的Main方法中(可以在启动类中进行启动)

js 复制代码
SpecialWork.Work();

4.考虑到IIS服务器的回收机制,需要设置一下IIS回收

在IIS中找到这个站点所用的程序池,点击"高级设置..." 在打开的列表中更改以下设置:

回收------固定时间间隔(分钟) 改为 0

------虚拟/专用内存限制(KB) 改为 0

进程模型------闲置超时(分钟) 改为 0

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

除图中标识的内容之外,闲置超时也要设为0

相关推荐
小Ti客栈2 小时前
Spring Boot 集成 Springdoc-OpenAPI 与 Knife4j实现接口文档与可视化调试
java·spring boot·后端
Ai拆代码的曹操2 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
IT_陈寒4 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱4 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
Wang's Blog4 小时前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
Conan在掘金5 小时前
鸿蒙报错速查:struct 里嵌 namespace 声明就炸,根因 + 真解法
后端
东方小月5 小时前
从零开发一个 Coding Agent(三):EventStream 事件流通道设计与实现
前端·人工智能·后端
卫子miao5 小时前
如何评价当前大语言模型的记忆机制?
后端·架构
神奇小汤圆6 小时前
为什么 AQS 成为 Java 并发的基石?
后端
星栈7 小时前
MCP 从 stdio 迁到 SSE,踩了 5 个传输层坑
人工智能·后端·架构