首页 > 其他分享 >net core-调用接口方式实现IHostedService的停止和启动

net core-调用接口方式实现IHostedService的停止和启动

时间:2023-05-31 10:22:18浏览次数:34  
标签:core log hostedServices private RecureHostedService recureHostedService net IHos



using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;

[Route("home")] [AllowAnonymous] public class HomeController : ControllerBase {  private readonly IEnumerable<IHostedService> _hostedServices;  private readonly RecureHostedService _recureHostedService;
 public HomeController(IEnumerable<IHostedService> hostedServices)  {      //_recureHostedService = hostedService;// as RecureHostedService;      // var hosteds = services.BuildServiceProvider().GetServices<IHostedService>();      _hostedServices = hostedServices;      _recureHostedService = _hostedServices.First(t => t is RecureHostedService) as RecureHostedService;  }   [Route("About")]  public IActionResult About()  {      //ViewData["Message"] = "Your application description page.";      _recureHostedService.StopAsync(new System.Threading.CancellationToken());      return Ok("Hello from Recure.");  }  [Route("Contact")]  public IActionResult Contact()  {      // ViewData["Message"] = "Your contact page.";      _recureHostedService.StartAsync(new System.Threading.CancellationToken());      return Ok("Your contact page.");  } }



public class RecureHostedService : IHostedService, IDisposable
 {
private readonly ILogger _log;
private Timer _timer;
public RecureHostedService(ILogger<RecureHostedService> log)
{
    _log = log;
}

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

public Task StartAsync(CancellationToken cancellationToken)
{
    _log.LogInformation("RecureHostedService is Starting");
    _timer = new Timer(DoWork,null,TimeSpan.Zero, TimeSpan.FromSeconds(5));
    return Task.CompletedTask;
}

public Task StopAsync(CancellationToken cancellationToken)
{
    _log.LogInformation("RecureHostedService is Stopping");
    _timer?.Change(Timeout.Infinite, 0);
    return Task.CompletedTask;
}
private void DoWork(object state)
{
    _log.LogInformation("Timed Background Service is working.");
}
}

在program.cs中:

builder.Services.AddSingleton<IHostedService, RecureHostedService>();

 

标签:core,log,hostedServices,private,RecureHostedService,recureHostedService,net,IHos
From: https://www.cnblogs.com/Insist-Y/p/17445322.html

相关文章

  • .NET周报 【5月第4期 2023-05-27】
    国内文章C#使用词嵌入向量与向量数据库为大语言模型(LLM)赋能长期记忆实现私域问答机器人落地之openai接口平替https://www.cnblogs.com/gmmy/p/17430613.html在上一篇文章中我们大致讲述了一下如何通过词嵌入向量的方式为大语言模型增加长期记忆,用于落地在私域场景的问题。其......
  • /etc/netplan/network-manager-all.yaml 配置服务器ip
    本文为博主原创,转载请注明出处:/etc/netplan是用于配置Ubuntu系统网络接口的目录。在Ubuntu中,网络配置的默认工具为  Netplan,而/etc/netplan则是Netplan配置文件的存储位置。在/etc/netplan目录中,通常会有一个或多个YAML格式的文件,用来定义系统中的网络接......
  • 【.NET源码解读】Configuration组件及自动更新
    Configuration组件是.NET中一个核心的、非常重要的组件。它提供了一种方便的机制,用于从配置文件、环境变量、命令行参数等各种数据源中读取和配置应用程序,以满足不同环境下应用程序的需求。在本篇文章中,将会介绍Configuration的基本用法,并通过源码探究.NET中Configuration的实现......
  • 基于ResNet18深度学习网络的mnist手写数字数据库识别matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要ResNet系列网络,图像分类领域的知名算法,经久不衰,历久弥新,直到今天依旧具有广泛的研究意义和应用场景。被业界各种改进,经常用于图像识别任务。ResNet-18,数字代表的是网络的深度,也就是说ResNet18网络就是18层的吗?实......
  • 基于ResNet18深度学习网络的mnist手写数字数据库识别matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        ResNet系列网络,图像分类领域的知名算法,经久不衰,历久弥新,直到今天依旧具有广泛的研究意义和应用场景。被业界各种改进,经常用于图像识别任务。ResNet-18,数字代表的是网络的深度,也就......
  • ubuntu下查看-卸载软件(卸载.net core sdk的方法)
    查看已安装的包:dpkg--list查看正则匹配的包:dpkg--list'dotnet-*' //查看以dotnet-开头的包卸载匹配的包:sudoapt-get--purgeremove<programname>按照正则卸载匹配的包:sudoapt-get--purgeremove'dotnet-*' //卸载以dotnet-开头的包如果不想自己手动输入Y确认的话则......
  • Unity框架与.NET, Mono框架的关系
    什么是C#C#是一种面向对象的编程语言。什么是.NET.NET是一个开发框架,它遵循并采用CIL(CommonIntermediateLanguage)和CLR(CommonLanguageRuntime)两种约定,CIL标准为一种编译标准:将不同编程语言(C#,JS,VB等)使用各自的编译器,按照统一的标准编译成语义一致的CIL中间码,......
  • tflearn alexnet iter 10
    他会自己下载数据: #-*-coding:utf-8-*-"""AlexNet.Applying'Alexnet'toOxford's17CategoryFlowerDatasetclassificationtask.References:-AlexKrizhevsky,IlyaSutskever&GeoffreyE.Hinton.ImageNetClassific......
  • install baidunetdisk-bin
    yay-Sbaidunetdisk-binAURExplicit(1):baidunetdisk-bin-4.17.7-1::(1/1)下载了PKGBUILD:baidunetdisk-bin1baidunetdisk-bin(构建文件已存在)==>清理哪些软件包的构建文件?==>[N]没有[A]全部[Ab]中止[I]已安装[No]未安装或(123,......
  • 【夜莺监控】管理Kubernetes组件指标
    !!大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事博客:www.jokerbai.com开始之前Kubernetes是一个简单且复杂的系统,简单之处在于其整体架构比较简单清晰,是一个标准的Master-Slave模式,如下:但是,它又是一个复杂的系统,不论是M......