首页 > 编程语言 >C# BackgroundService服务案例

C# BackgroundService服务案例

时间:2025-01-03 14:44:41浏览次数:5  
标签:Task C# void BackgroundService 案例 protected override public

 1 public abstract class BackGroundWork : BackgroundService
 2 {
 3     /// <summary>
 4     /// 创建⼀个取消标记源
 5     /// </summary>
 6     private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
 7     /// <summary>
 8     /// 入参委托
 9     /// </summary>
10     private Action<object> action;
11 
12     /// <summary>
13     /// 初始化
14     /// </summary>
15     protected void Init()
16     {
17         action = async (e) =>
18         {
19             while (true)
20             {
21                 DoWork(e);
22                 await Task.Delay(TimeSpan.FromSeconds(10));
23             }                
24         };
25     }
26     /// <summary>
27     /// 执行方法
28     /// </summary>
29     /// <param name="stoppingToken"></param>
30     /// <returns></returns>
31     protected override Task ExecuteAsync(CancellationToken stoppingToken)
32     {
33         Init();
34         _ = Task.Factory.StartNew(action, cancellationTokenSource.Token);
35         return Task.CompletedTask;
36     }
37     /// <summary>
38     /// 停止执行方法
39     /// </summary>
40     /// <param name="cancellationToken"></param>
41     /// <returns></returns>
42     public override Task StopAsync(CancellationToken cancellationToken)
43     {
44         cancellationTokenSource.Cancel();
45         return base.StopAsync(cancellationToken);
46     }
47 
48     protected abstract void DoWork(object e);
49 
50 }

 

public partial class SyncWorker : BackGroundWork
{
    protected override void DoWork(object e)
    {
       var service = ServiceLocator.Instance.GetRequiredService<SyncService>();
        Task.WaitAll(service.ExecServiceAsync());
    }
}

C# BackgroundService服务案例

可以使用三方库,hangfire, topshelf, Quartz. and so on.

标签:Task,C#,void,BackgroundService,案例,protected,override,public
From: https://www.cnblogs.com/Leo_wl/p/18650088

相关文章

  • echarts 使用bmap绘制polygon多边形
    效果预览代码echartsoption配置中的series写法如下:series:[{type:'custom',coordinateSystem:'bmap',renderItem:(params,api)=>renderPolygon(params,api,gArea),data:gArea,seriesIndex:1,......
  • C++之模板进阶
    文章目录1.引言2.非类型模板参数2.1概念及使用2.2与#define定义宏的对比3.模板的特化3.1概念3.2函数模板特化3.3类模板特化3.3.1全特化3.3.2偏特化(也称半特化)3.3.3类模板特化应用示例4.模板的分离编译(了解)4.1什么是分离编译4.2模板的分离编译5.模......
  • CSRF
    1.基础知识:跨域访问控制和Same-OriginPolicy(同源策略)1.1Cookies的自动发送机制登录Web应用后,浏览器会存储一些Cookies当我们向该应用发送请求时,这些Cookies会自动随请求一起发送,用于验证我们的登录状态。1.2同源策略的作用HTML中的iframe可以嵌入其他网站,但出于安全考虑,跨if......
  • .NET Core + Kafka 开发指南
    什么是KafkaApacheKafka是一个分布式流处理平台,由LinkedIn开发并开源,后来成为Apache软件基金会的顶级项目。Kafka主要用于构建实时数据管道和流式应用程序。Kafka架构从下面3张架构图中可以看出KafkaServer实际扮演的是Broker的角色,一个KafkaCluster由多个Broker组成,......
  • scala图书管理系统【ui】软件包
    LibrarayPresentationpackageorg.apppackageuiimportorg.app.modeis.{BookModel,UserModel}importorg.app.service.{BookService,UserService}importscala.io.StdInimportscala.io.StdIn.readLineclassLibrarayPresentation{ privatevalBookService=new......
  • @SpringBootApplication
    简介:‌SpringBootApplication‌是SpringBoot框架中的一个核心注解,用于简化SpringBoot应用程序的配置和启动。它是一个组合注解,包含了多个子注解,主要包括SpringBootConfiguration、EnableAutoConfiguration和ComponentScan。子注解:‌@SpringBootConfiguration‌:这个注解相......
  • Scala语言的函数实现
    Scala语言中的函数实现:优雅与高效并存的艺术在编程的世界里,函数是构建软件的基本单元之一,它不仅体现了代码的逻辑和结构,更是程序设计思想的具体体现。Scala,作为一种融合了面向对象和函数式编程特性的现代编程语言,其对函数的支持尤为丰富和强大。本文将深入探讨Scala语言中函数......
  • 【案例实操】Stable Diffusion 将产品白底图变成电商模特场景图全流程思路分享
    前言:在电商的视觉战场上,产品展示图的吸引力关乎成败。白底图虽简洁,却难在竞争中脱颖而出。本案例实操将为你揭秘如何利用StableDiffusion扭转乾坤,把单调白底图转化为吸睛的电商模特场景图,开启创意无限的电商视觉营销新篇章。今天分享一下SD模特+化妆品,艺术创作的教程......
  • 【Spring Cloud】8.Spring Cloud Alibaba Nacos——服务注册和配置中心
    之前,我已经学习过Nacos的下载和启动。Nacos介绍官网说明:https://nacos.io/docs/latest/quickstart/quick-start/github地址:https://github.com/alibaba/nacosNacos:DynamicNamingAndConfigurationService,动态命名和配置服务。一个更易于构建云原生应用的动态服务发......
  • 在Windows CMD中批量删除某个时间之前的文件
    在日常使用Windows系统时,可能会遇到需要清理过期文件的情况。比如,删除某个目录下所有修改时间早于特定日期的文件。对于那些不想使用第三方软件的用户,Windows自带的命令行工具就可以轻松完成这个任务。在这篇文章中,我们将介绍如何使用CMD(命令提示符)通过forfiles命令批量删除指......