首页 > 其他分享 >.NET Core 实现后台任务(定时任务)IHostedService

.NET Core 实现后台任务(定时任务)IHostedService

时间:2023-03-03 09:55:05浏览次数:68  
标签:Core Task cancellationToken timer public 后台任务 IHostedService NET

  • program添加服务
    // .Net 6
    builder.Services.AddHostedService<TestHostedService>();
    
    // .Net  5 及以下
    services.AddHostedService<TestHostedService>();

     

  • 添加工作类
 public class TestHostedService : IHostedService, IDisposable
    {
        private Timer? _timer;

        /// <summary>
        /// 任务开始
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));

            return Task.CompletedTask;
        }

        private void DoWork(object? state)
        {
            Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
        }

        /// <summary>
        /// 任务停止
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task StopAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("StopAsync");

            return Task.CompletedTask;
        }


        public void Dispose()
        {
            _timer?.Dispose();
        }
    }

 

  • 效果

 

标签:Core,Task,cancellationToken,timer,public,后台任务,IHostedService,NET
From: https://www.cnblogs.com/Echoxxx/p/17174500.html

相关文章

  • 【译】.NET 7 中的性能改进(十)
    原文|StephenToub翻译|郑子铭最后一个有趣的与IndexOf有关的优化。字符串早就有了IndexOf/IndexOfAny/LastIndexOf/LastIndexOfAny,显然对于字符串来说,这都是关于处......
  • C#-EF Core使用MySQL数据库
    简介EntityFrameworkCore(EFCore)是微软推荐的基于.NETCore的应用程序数据访问技术。开源,轻量级,可扩展并且支持跨平台开发。EFCore是一种对象关系映射器(ORM),通过应用......
  • Netty
    数据模型最主要的就是Channel每一个Channel都有自己的ChannelPipeline每一个Channel只会和一个EventLoop绑定EventLoop和Channel是一对多关系.EventLo......
  • RangeNet++学习笔记
    RangeNet++方法(A)将输入点云转换为距离图像表示,即range图像;(B)2D图像完全卷积语义分割;(C)从原始点云中恢复所有点的从2D到3D的语义转换,无论使用的距离图像离散......
  • 【App消息推送】.NET7简单实现个推服务端
     一.添加基础设施1.添加配置实体模型publicclassGetuiConfigOptions{publicstringAppID{get;set;}publicstringAppKey{get;......
  • .Net DI(Dependency Injection)依赖注入机制
    1、简介DI:DependencyInjection,即依赖注入,他是IOC的具体实现。在DI中,底层服务对象不再负责依赖关系的创建,而是交由顶端调用进行管理注入好处:降低组件之间的......
  • macOS 13.3 Beta 2 (22E5230e)With OpenCore 0.8.9正式版 and winPE双引导分区原版镜像
    原文在黑果魏叔官网,转载需注明出处镜像特点完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需......
  • 解决当前标识(IIS APPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\
    1、问题描述在WindowsServer2019数据中心版中搭建IIS项目,访问的时候出现如下所示的错误:当前标识(IISAPPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0......
  • 用telnet远程连接linux系统
     环境,centos7.6通过telnet进行远程登录的方法如下:1.安装telnet,telnet-server,xinetd检测是否安装telnetrpm-qa|greptelnet检测是否安装xinetdrpm-qa|grep......
  • .net 6.0 swagger的安装和配置
      nuget安装包:Swashbuckle.AspNetCore.SwaggerGennuget安装包:Swashbuckle.AspNetCore.SwaggerUI   usingMicrosoft.OpenApi.Models;usingXiaowu_Ship.AutoM......