Asp.Net Core WebApi通过BackgroundService执行后台任务

2022/4/27 14:12:45

本文主要是介绍Asp.Net Core WebApi通过BackgroundService执行后台任务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

core 2.0中通过实现IHostedService接口实现后台任务

    public interface IHostedService
    {
        Task StartAsync(CancellationToken cancellationToken);
        Task StopAsync(CancellationToken cancellationToken);
    }

core2.1开始,提供了一个继承IHostedService接口的实现类BackgroundService,我们通过实现抽象类BackgroundService来实现后台任务

   public class MonitorService : BackgroundService
    {
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var lastExecTime = DateTime.Now;
            var lastHourTime = DateTime.Now;
            var lastZeroTime = DateTime.Now;            

            while (!stoppingToken.IsCancellationRequested)
            {
                // 每分钟循环一次
                await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);

                if ((DateTime.Now - lastExecTime).TotalMinutes > 10)
                {
                    lastExecTime = DateTime.Now;
                    // 执行定时任务
                }

                if (DateTime.Now.Hour > lastHourTime.Hour)
                {
                    lastHourTime = DateTime.Now;
                    // 执行整点任务
                }

                if (DateTime.Now.Date > lastZeroTime.Date)
                {
                    lastZeroTime = DateTime.Now;
                    // 执行每天零点任务
                }
            }
        }
    }

在WebApi的Startup类的ConfigureServices方法中注册后台服务

services.AddHostedService<MonitorService>();

在IIS中部署WebApi时,由于IIS自动回收机制会导致后台服务终止,需要对IIS的应用程序池进行配置,在应用程序池上点击高级设置,将启动模式改为“AlwaysRunning”,将固定时间间隔(分钟)改为0

 



这篇关于Asp.Net Core WebApi通过BackgroundService执行后台任务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程