.Net Core构建后台定时服务

本文介绍了在.NetCore2.1中如何利用BackgroundService创建后台任务服务,特别是用于定时任务的场景。首先在Startup配置文件中注册服务,然后创建一个继承自BackgroundService的TimedExecutService类,重写ExecuteAsync、StartAsync和StopAsync方法以实现业务逻辑。在ExecuteAsync方法中,通过循环和Task.Delay实现定时任务的执行。最后,当接收到停止信号时,执行StopAsync方法进行清理工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在.Net Core2.1版本中,新增了一个名为BackgroundService的类,隶属于Microsoft.Extensions.Hosting命名空间,用来创建后台任务服务,比如定时推送数据与接收消息等。现在我们来实现一个简单的定时任务。

注册服务

首先我们先在Startup中注册该服务。

services.AddSingleton<IHostedService,TimedExecutService>()

其中TimedExecutService是我们基于继承BackgroundService新建的定时任务类。

实现接口

BackgroundService接口提供了三个方法,分别是ExecuteAsync(CancellationToken)StartAsync(CancellationToken)StopAsync(CancellationToken)TimedExecutService可以通过重载这三个方法来实现业务开发。

public class TimedExecutService : BackgroundService
{
    private readonly ILogger<TimedExecutService> logger;
    private readonly TimedExecutServiceSettings settings;

    public TimedExecutService(IOptions<TimedExecutServiceSettings> settings, ILogger<TimedExecutService> logger)
        {
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            logger.LogDebug($"TimedExecutService is starting.");
            stoppingToken.Register(() => logger.LogDebug($"TimedExecutService is stopping."));

            while (!stoppingToken.IsCancellationRequested)
            {
                logger.LogDebug($"TimedExecutService doing background work.");
                //Doing Somethings
                await Task.Delay(_settings.CheckUpdateTime, stoppingToken);
            }

            logger.LogDebug($"TimedExecutService is stopping.");
        }

        protected override async Task StopAsync (CancellationToken stoppingToken)
        {
               // Doing Somethings
        }
}

至此,一个定时任务服务已经开发完成,赶紧去试试吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值