2步轻松实现ASP.NET Core托管服务执行定时任务

这篇具有很好参考价值的文章主要介绍了2步轻松实现ASP.NET Core托管服务执行定时任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近接到一个新项目,需要在项目里添加一个后台任务,定时去发邮件通知客户;由于是一个比较小型的项目,不希望引入Quartz.Net、Hangfire等太重的框架,同时也没持久化要;寻觅了一下发现ASP.NET Core本身带有托管服务,可以执行定时任务。ASP.NET Core提供了IHostedService接口,它使我们能够创建后台任务并在应用程序的生命周期中管理这些任务。使用IHostedService接口,我们可以实现在指定时间间隔内重复执行的定时任务。本文将介绍如何使用IHostedService接口实现定时任务

使用步骤

1、实现IHostedService任务接口

首先,我们需要创建一个类来实现IHostedService接口。这个类将包含我们要执行的定时任务的逻辑。下面是一个简单的示例:

public class MyTaskService : IHostedService, IDisposable
    {
        private readonly ILogger<MyTaskService> _logs;
        private Timer timer;
        public MyTaskService(ILogger<MyTaskService> logger)
        {
            this._logs=logger;
        }
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _logs.LogInformation("开始任务执行!!");
            timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
            return Task.CompletedTask;
        }
        public void DoWork(object state)
        {
            string dt = DateTime.Now.ToString();
            _logs.LogInformation("任务执行中:"+ dt.ToString()+ "!!");

        }
        public Task StopAsync(CancellationToken cancellationToken)
        {
            timer?.Change(Timeout.Infinite, 0);
            _logs.LogInformation("任务执行结束!");
            return Task.CompletedTask;
        }
        public void Dispose()
        {
            timer?.Dispose();
        }
    }
  //欢迎关注公众号:DOTNET开发跳槽,领取海量面试题。加微信号xbhpnet入群交流

简而言之,这是一个自定义服务,使用定时器每 30 秒执行一次任务。它实现了 IHostedService 和 IDisposable 接口,并使用依赖注入 ILogger 记录任务执行的开始和结束。

2、注册组件

使用定时任务需要将其注册到ASP.NET Core应用程序中,并根据需求。在Program.cs中,添加以下代码:

 builder.Services.AddHostedService<MyTaskService>();

3、执行效果

以上代码全部写完了,不需要引用任何包,很简单吧。执行效果如下:

2步轻松实现ASP.NET Core托管服务执行定时任务

结语

本文提供了一个简单的示例来演示如何使用IHostedService实现定时任务,并将其注册到ASP.NET Core应用程序中。大家可以根据自己使用场景来配置相应生命周期的时间间隔的定时任务。它的优点是轻量级别,使用简单;但是比较复杂的和批量的定时任务还是建议使用第三方定时任务组件,比如hangfire等主流工具。是不是很简单?希望本文对你有所收获。文章来源地址https://www.toymoban.com/news/detail-455941.html

来源公众号:DOTNET开发跳槽

到了这里,关于2步轻松实现ASP.NET Core托管服务执行定时任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 在ASP.NET Core中轻松使用JwtBeare进行身份验证

    在ASP.NET Core中轻松使用JwtBeare进行身份验证

    JwtBearer简介 首先要搞清楚什么是JwtBearer,JwtBearer是ASP.NET Core的OAuth 2.0 JWT Bearer身份验证提供程序。它提供了对JWT令牌进行验证的功能,然后允许将令牌中包含的声明(claims)用于用户身份验证和授权控制。 Json Web Token (JWT)是一种Web标准,用于在不同系统间传输数据。JWT是一种

    2024年02月04日
    浏览(12)
  • Asp .Net Core 系列:集成 Ocelot+Consul实现网关、服务注册、服务发现

    Asp .Net Core 系列:集成 Ocelot+Consul实现网关、服务注册、服务发现

    Ocelot是一个开源的ASP.NET Core微服务网关,它提供了API网关所需的所有功能,如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关,它可以与现有的服务集成,并帮助您保护、监控和扩展您的微服务。 以下是Ocelot的一些主要功能: 路由管理:Ocelot允许您

    2024年01月17日
    浏览(14)
  • Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

    Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

    官网:https://www.consul.io/ Consul 是一款开源的服务发现和配置管理工具,它能够监控应用程序和服务之间的通信,并提供了一组 API 和 Web UI,用于管理服务和配置。 Consul 是分布式的、高可用的、可横向扩展的,具备以下特性: 服务发现:Consul 通过 DNS 或者 HTTP 接口使服务注册

    2024年01月21日
    浏览(14)
  • 使用任务计划开机启动ASP.NET Core应用程序

    使用任务计划开机启动ASP.NET Core应用程序

    ASP.NET Core应用程序现在是一个控制台应用程序,在Windows上直接双击启动,但如果想让开发完成的ASP.NET Core应用程序开机启动,可以将ASP.NET Core应用程序修改成Windows服务运行,但这需要额外添加代码,也可以使用IIS来托管ASP.NET Core应用程序,但可能需要安装一些支持IIS的组件

    2024年02月08日
    浏览(13)
  • 前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域

    前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域

    可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如 vue.js、react 的出现,也让前后端分离趋势加快。 所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责

    2024年01月17日
    浏览(10)
  • 在ASP.NET Core微服务架构下使用RabbitMQ如何实现CQRS模式

    在ASP.NET Core微服务架构下使用RabbitMQ如何实现CQRS模式

    前言 在现代软件开发中,微服务架构和CQRS模式都是备受关注的技术趋势。微服务架构通过将应用程序拆分为一系列小型、自治的服务,提供了更好的可伸缩性和灵活性。而CQRS模式则通过将读操作和写操作分离,优化了系统的性能和可维护性。本文小编将为大家介绍如何在

    2024年01月16日
    浏览(16)
  • Asp .Net Core 系列:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现

    Asp .Net Core 系列:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现

    什么是 Ocelot ? Ocelot是一个开源的ASP.NET Core微服务网关,它提供了API网关所需的所有功能,如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关,它可以与现有的服务集成,并帮助您保护、监控和扩展您的微服务。 以下是Ocelot的一些主要功能: 路由管理

    2024年01月19日
    浏览(14)
  • ASP.NET Core如何知道一个请求执行了哪些中间件?

    ASP.NET Core如何知道一个请求执行了哪些中间件?

    需要添加两个Nuget包分别是: Microsoft.AspNetCore.MiddlewareAnalysis 和 Microsoft.Extensions.DiagnosticAdapter ,前者是分析记录中间件核心代码实现后者是用来接收日志输出的,由于是用的DiagnosticSource方式记录日志,所以需要使用DiagnosticListener对象的SubscribeWithAdapter方法来订阅。 这个适配器

    2023年04月09日
    浏览(50)
  • 《深入浅出.NET框架设计与实现》笔记6.2——ASP.NET Core应用程序多种运行模式之二——IIS 服务承载

     ASP.NET Core应用程序可以在多种运行模式下运行,包括自宿主(Self-Hosting)、IIS服务承载、桌面应用程序、服务承载。 因此选择和时的模式很重要。 IIS 服务承载 将 ASP.NET Core 应用程序托管在 Internet Information Services (IIS) 中。 利用 IIS 提供的高级功能,如负载均衡、HTTPS 支持和

    2024年04月26日
    浏览(11)
  • ASP.NET Core SignalR 系列(二)- 中心(服务端)

    ASP.NET Core SignalR 系列(二)- 中心(服务端)

    本章将和大家分享 ASP.NET Core SignalR 中的中心(服务端)。 本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hubs?view=aspnetcore-7.0 废话不多说,我们直接来看一个Demo,Demo的目录结构如下所示: 本Demo的Web项目为ASP.NET Core Web 应用程序( 目标框架为.NET 7.0

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包