抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
NET Core 2.0 引入了 IHostedService ,基于它可以很方便地执行后台任务,.NET    则锦上添花地提供了 IHostedService 的默认实现基类 BackgroundService ,在这篇随笔中用 Web 体验一下。

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

    {

        private readonly ILogger _logger;

        private Timer _timer;

        public TimedBackgroundService(ILogger 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();

}

简单Demo使用
创建
TaskAndOrderService
类,继承
: BackgroundService
,实现接口
/// 

    /// 任务订单处理自动开始结束

    /// 

    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();


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码