专栏首页林德熙的博客ASP.NET Core 开启后台任务

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 条评论
登录 后参与评论

相关文章

  • win10 uwp HttpClient post错误

    进行HttpClient post参数错误 从“Windows.Web.Http.HttpStringContent”转换为“System.Net.Http.H...

    林德熙
  • WPF 程序生成类库错误

    出现这个错误是因为 app.xaml 的生成是 ApplicationDefinition ,所以可以右击项目的 app.xaml 文件,在属性生成选择 pa...

    林德熙
  • ASP.NET Core 因为 Nginx 配置 Connection 为 Upgrade 导致 Kestrel 返回 400 错误

    我今天遇到了一个坑,我的服务器在经过了 Nginx 之后,发送的 POST 请求,如果请求里面有 Body 内容,那么 Kestrel 将会返回 400 错误,...

    林德熙
  • 数列排序算法总结(Python实现)

    非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。

    用户7886150
  • 看我如何下载Ebay日本(www.ebay.co.jp)的网站源码

    笔者最近在对Alexa排名靠前的大公司网站做了一些安全测试,其中网站错误配置漏洞时有发现,这种问题往往不需要高深复杂的漏洞利用,但却能对网站业务产生严重影响,在...

    FB客服
  • 前沿观察 | 谷歌新出SageDB:一个自学成才的数据库

    点击上方蓝字关注 每天学习数据库 版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于db weekly英文官网,若转载请注明出处。翻译目的在于传递更...

    腾讯云数据库 TencentDB
  • UNIX(多线程):11---单例设计模式共享数据分析,call_once()函数

    用户3479834
  • Flask-email 发送邮件的配置,发送附件的方法,以及os.environ.get('MAIL_USERNAME')为None的解决办法

    用户1214487
  • mod_cdr_csv

    这几天由于来回打飞机参加公司年会,来去匆匆,因此没顾上写东西。不过,在后台倒是收到不少消息。有关心的有问候的有祝福的,总之,在此一起谢谢了。

    用户1506126
  • 中国科学家研制出世界首台液态金属机器“终结者”

    中国科学家造出了世界首台液态金属机器,这一成就被外媒形容为制造出“终结者”。 据中科院理化所网站,3月3日,由刘静研究员带领的中国科学院理化技术研究所、清华大...

    机器人网

扫码关注云+社区

领取腾讯云代金券