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

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

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

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

前言

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

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

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

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

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

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

  • 添加必要的NuGet包

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

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

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

  • 创建一个HostBuilder对象

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

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

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

  • 添加定时任务

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

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

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

  • 实现IHostedService接口

在MyTimer类中实现IHostedService接口:3ho28资讯网——每日最新资讯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方法用于释放计时器资源。3ho28资讯网——每日最新资讯28at.com

  • 运行应用程序

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

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

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

Hangfire实现任务调度

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

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

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

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

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

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
  • 2299元起!iQOO Pad明晚首销:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其最大的卖点
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
Top