当前位置:首页 > 科技  > 软件

如何使用Asp.net Core实现定时任务,轻松解决任务调度问题!

来源: 责编: 时间:2023-08-09 23:02:55 459观看
导读前言Asp.net core作为一种高效、跨平台的web框架,在开发过程中,我们常常需要在后台执行定时任务,例如清理无用文件、生成报告、发送邮件等任务。对于这种需求,我们可以使用第三方库(如Hangfire或Quartz.NET)来实现任务调度

TFS28资讯网——每日最新资讯28at.com

前言

Asp core作为一种高效、跨平台的web框架,在开发过程中,我们常常需要在后台执行定时任务,例如清理无用文件、生成报告、发送邮件等任务。对于这种需求,我们可以使用第三方库(如Hangfire或Quartz.NET)来实现任务调度和执行,也可以使用asp core自带的Hosting模块和System.Timers.Timer类来实现简单的定时任务。TFS28资讯网——每日最新资讯28at.com

本篇文章主要介绍如何使用Asp core自带的Hosting模块和System.Timers.Timer类,以及Hangfire和Quartz.NET分别实现定时任务。将展示一个完整的示例代码,并详细解释代码中各个部分的含义和作用,以帮助理解实现过程和相关知识点。TFS28资讯网——每日最新资讯28at.com

自带的Hosting模块实现任务调度

下面将分步骤详细介绍如何使用asp core自带的Hosting模块和System.Timers.Timer类来实现定时任务。TFS28资讯网——每日最新资讯28at.com

  • 创建一个控制台应用程序

首先,在Visual Studio中创建一个控制台应用程序。TFS28资讯网——每日最新资讯28at.com

  • 添加必要的NuGet包

在项目中添加以下NuGet包:TFS28资讯网——每日最新资讯28at.com

  • Microsoft.Extensions.Hosting.Abstractions
  • Microsoft.Extensions.Hosting

这两个NuGet包提供了asp core的Hosting模块和应用程序生命周期管理功能。TFS28资讯网——每日最新资讯28at.com

  • 创建一个HostBuilder对象

在Main方法中创建一个HostBuilder对象:TFS28资讯网——每日最新资讯28at.com

static void Main(string[] args){    var builder = new HostBuilder()            .UseConsoleLifetime()   // 控制台生命周期管理            .ConfigureServices((hostContext, services) =>            {                 // 配置服务            });                       builder.Build().Run();}

HostBuilder提供了配置应用程序服务、托管生命周期、配置应用程序配置等功能。可以使用UseConsoleLifetime方法来配置应用程序的控制台生命周期管理。TFS28资讯网——每日最新资讯28at.com

  • 添加定时任务

在ConfigureServices方法中添加定时任务:TFS28资讯网——每日最新资讯28at.com

ConfigureServices((hostContext, services) =>{    // 添加定时器组件    services.AddHostedService<MyTimer>();});

上面的代码中,我们向服务容器中添加了一个MyTimer类,这个类实现了IHostedService接口。TFS28资讯网——每日最新资讯28at.com

  • 实现IHostedService接口

在MyTimer类中实现IHostedService接口:TFS28资讯网——每日最新资讯28at.com

// MyTimer.cspublic class MyTimer : IHostedService, IDisposable{    private readonly Timer _timer;    public MyTimer()    {        _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); // 每5秒执行一次DoWork方法    }    public Task StartAsync(CancellationToken cancellationToken)    {        Console.WriteLine("定时任务已启动");        return Task.CompletedTask;    }    public Task StopAsync(CancellationToken cancellationToken)    {        Console.WriteLine("定时任务已停止");        return Task.CompletedTask;    }    public void Dispose()    {        _timer?.Dispose();    }    private void DoWork(object state)    {        Console.WriteLine($"定时任务执行中,当前时间:{DateTime.Now}");    }}

MyTimer类继承了IHostedService接口,该接口定义了应用程序生命周期管理的方法。在MyTimer的构造函数中,我们创建了一个计时器,并在每5秒钟的时间间隔内执行DoWork方法。在StartAsync方法中,输出“定时任务已启动”信息;在StopAsync方法中,输出“定时任务已停止”信息。Dispose方法用于释放计时器资源。TFS28资讯网——每日最新资讯28at.com

  • 运行应用程序

完成上面的步骤后,我们可以运行应用程序,观察控制台输出的结果TFS28资讯网——每日最新资讯28at.com

每5秒钟控制台会输出一条类似于“定时任务执行中,当前时间:2023/06/12 15:34:48”的信息,表示定时任务正在运行。当我们手动停止应用程序时,控制台会输出“定时任务已停止”信息,表示定时任务已经被成功停止。TFS28资讯网——每日最新资讯28at.com

至此,我们成功地使用asp core自带的Hosting模块和System.Timers.Timer类实现了定时任务。在实际应用中,可以根据需求添加更多的定时任务,并调整计时器的时间间隔等参数。TFS28资讯网——每日最新资讯28at.com

Hangfire实现任务调度

TFS28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-5152-0.html如何使用Asp.net Core实现定时任务,轻松解决任务调度问题!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 用这五个技巧将你的Vue技能提升到新的高度

下一篇: SpringBoot整合RabbitMQ延迟队列&amp;优先级队列详解

标签:
  • 热门焦点
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 三星Galaxy Z Fold5今日亮相:厚度缩减但仍略显厚重

    据官方此前宣布,三星将于7月26日也就是今天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 荣耀Magicbook V 14 2021曙光蓝版本正式开售,拥有触摸屏

    荣耀 Magicbook V 14 2021 曙光蓝版本正式开售,搭载 i7-11390H 处理器与 MX450 显卡,配备 16GB 内存与 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 键盘键程、
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top