ASP.NET Core 开启后台任务

本文告诉大家如何通过 Microsoft.Extensions.Hosting.BackgroundService 开启后台任务

实现 BackManagerService 类继承 BackgroundService 抽象类,请看代码

    public class BackManagerService : BackgroundService
    {
        /// <inheritdoc />
        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            return Task.CompletedTask;
        }
    }

然后打开 Startup.cs 在 ConfigureServices 方法注入

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<IHostedService, BackManagerService>();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

现在运行 ASP.NET Core 程序就可以看到调用进 ExecuteAsync 方法了

那么如何实现轮询?大概在30秒左右做某个任务?在没有用任何设计的情况,假如这个任务就放在了 BackManagerService 的 Foo 方法,可以通过下面代码调用

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                Foo();
                await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
            }
        }

通过 Task.Delay 的方法延迟指定的时间就可以了,那么更复杂的封装就在大佬们的封装变得更加好用,更多封装请看 Ron 大佬博客

所有代码放在 github

Asp.Net Core 轻松学-基于微服务的后台任务调度管理器 - Ron.Liang - 博客园

在 ASP.NET Core 中使用托管服务实现后台任务


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏博客园

简析 .NET Core 构成体系

上图描述了 .NET Core的系统构成,最上层是应用层,是开发基于UI应用的框架集,包括了ASP.NET Core(用于创建web app),和 UWP(用于...

11020
来自专栏博客园

SignalR

  SignalR是一个继承的客户端与服务器库,基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话,换句话说,该对话可不受限制的进行...

11720
来自专栏依乐祝

asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案

之前碰到asp.net core异步进行新增操作并且需要判断某些字段是否重复的问题,进行插入操作的话会导致数据库中插入重复的字段!下面把我的解决方法记录一下,如...

13530
来自专栏me的随笔

ASP.NET Core中使用Graylog记录日志

通常POST请求数据都在请求体中,ASP.NET Core中HttpRequest类型的Body属性是HttpRequestStream类型,该类型源码在Git...

16020
来自专栏技术博客

菜菜从零学习WCF四(承载服务)

我们都知道WCF在运行的时候必须自己提供宿主来承载服务。WCF 本身没有附带宿主,就需要我们自己来依附于宿主而承载WCF服务。

8320
来自专栏远在上海

在Global.asax中获取Session的注意事项

几年前给朋友珠宝公司开发过一套旺财珠宝库存管理系统,用得还是web Form老技术,但是更多的走Ashx+Ajax,但前端可是HTML5+jQuery+Boot...

22220
来自专栏技术博客

ExtJs一(Hello World)

  本文原文链接地址 http://aehyok.com/Blog/Detail/48.html

10420
来自专栏李蔚蓬的专栏

用ASP.NET做一个简单的数据流动展示

需求:连接数据库,在网页上显示一行数据,总共十列,每两秒刷新一次,刷新时数据往前流动(后一个单元格覆盖前一个单元格,最后一个单元格生成一个随机数)

10220
来自专栏依乐祝

Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

上一篇文章中,给大家讲解了如何通过 Asp.Net Core Web Api实现图片上传的接口,具体的可以[点这里查看][https://www.cnblogs...

19140
来自专栏博客园

深入理解asp.net里的HttpModule机制

说明: (1)、客户端浏览器向服务器发出一个http请求,此请求会被inetinfo.exe进程截获,然后转交给aspnet_isapi.dll进程,接着它又...

12410

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励