吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1977|回复: 5
收起左侧

[其他转载] .NET Core 基于 IHostedService 实现后台定时任务

[复制链接]
迷恋自留地 发表于 2021-9-22 17:52

.NET Core 基于 IHostedService 实现后台定时任务

NET Core 2.0 引入了 IHostedService ,基于它可以很方便地执行后台任务,.NET Core 2.1 则锦上添花地提供了 IHostedService 的默认实现基类 BackgroundService ,在这篇随笔中分别用 Web 与 Console 程序体验一下。

第一步:首先继承 BackgroundService 实现一个 TimedBackgroundService

 class TimedBackgroundService : BackgroundService
    {
        private readonly ILogger _logger;
        private Timer _timer;

        public TimedBackgroundService(ILogger<TimedBackgroundService> logger)
        {
            _logger = logger;
        }

        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
            return Task.CompletedTask;
        }

        private void DoWork(object state)
        {
            _logger.LogInformation($"Hello World! - {DateTime.Now}");
        }

        public override void Dispose()
        {
            base.Dispose();
            _timer?.Dispose();
        }

    }

第二步:在 ASP.NET Core Web 程序中执行这个后台定时任务只需在 Startup 的 ConfigureServices 注册 TimedBackgroundService 即可:

public void ConfigureServices(IServiceCollection services)
{
    services.AddHostedService<TimedBackgroundService>();
}

简单Demo使用

创建TaskAndOrderService 类,继承 : BackgroundService ,实现接口

/// <summary>
    /// 任务订单处理自动开始结束
    /// </summary>
    public class TaskAndOrderService : BackgroundService
    {

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {

            while (!stoppingToken.IsCancellationRequested)
            {
                 //doto (处理业务)
                 Console.WriteLine($"{DateTime.Now}-你好");

                await Task.Delay(5000, stoppingToken);
            }
        }

    }

然后在server中注册

 //设置任务自动开始后者任务结束
            services.AddHostedService<TaskAndOrderService>();

https://hunji.xyz/archives/87.html

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小小的石头13 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

  • · Aarow|主题: 991, 订阅: 304

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jy04468108 发表于 2021-9-22 20:32
我还以为是framework,结果是asp。
goldli 发表于 2021-9-22 22:47
cssos15 发表于 2021-9-22 23:08
 楼主| 迷恋自留地 发表于 2021-9-25 10:31
jy04468108 发表于 2021-9-22 20:32
我还以为是framework,结果是asp。

NET 5好吧
 楼主| 迷恋自留地 发表于 2021-9-25 10:32
goldli 发表于 2021-9-22 22:47
你直接创建一个worker service就是这玩意儿。

方法多种多样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 18:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表