使用 IHostedService 创建后台服务需实现接口或继承 BackgroundService 类,1. 实现 StartAsync 和 StopAsync 方法启动和停止任务,2. 在 Program.cs 中通过 AddHostedService 注册服务,推荐继承 BackgroundService 并重写 ExecuteAsync 执行循环逻辑,同时监听 CancellationToken 确保优雅关闭。

IHostedService 是 C# 中用于在 .NET 应用程序(特别是 ASP.NET Core 和泛型主机应用)中运行后台任务的接口。它允许你在应用程序启动后执行长时间运行或周期性执行的操作,比如定时处理数据、轮询数据库、发送邮件、监听消息队列等。
实现 IHostedService 接口后,你的服务会在应用启动时自动开始,并在应用关闭时优雅地停止。
要创建一个后台运行的服务,你需要:
1. 实现 IHostedService 接口
该接口包含两个方法:
下面是一个简单的后台服务示例,每 5 秒打印一次时间:
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
public class MyBackgroundService : IHostedService
{
private Timer? _timer;
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}");
}
public Task StopAsync(CancellationToken cancellationToken)
{
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
}2. 将服务注册到依赖注入容器
牛NIUCMS本地O2O系统
牛NIUCMS本地O2O系统是一个以php+mysql进行开发的o2o网站系统。NIUCMS是一款强大的网站管理系统。支持智慧城市、智慧小区、智慧乡村、本地生活门户、本地O2O平台的构建。请注意以下几点:1、这套源码必须要服务器支持伪静态,是支持.htaccess规则的伪静态,一般Apache服务器支持,别搞的下载回去以后说什么缺 少文件,其实源码并非缺少文件。2、这套源码请在php 5.4环境下
0
查看详情
在 Program.cs 或 Startup.cs 中将你的服务添加为托管服务:
var builder = WebApplication.CreateBuilder(args); // 添加后台服务 builder.Services.AddHostedService<MyBackgroundService>(); var app = builder.Build(); app.Run();
.NET 提供了一个抽象类 BackgroundService,它是 IHostedService 的实现,更适合复杂的异步后台任务。
它提供了一个虚方法 ExecuteAsync,你可以重写它来定义主逻辑。
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
public class TimedBackgroundService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// 执行任务
Console.WriteLine($"定时任务执行: {DateTime.Now}");
// 等待 5 秒,期间可被取消
await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
}
}
}同样需要注册:
```csharp builder.Services.AddHostedService基本上就这些。通过 IHostedService 或 BackgroundService,你可以轻松在 .NET 应用中集成后台任务,无需额外线程管理,且与应用生命周期一致。
以上就是C#的IHostedService是什么?如何创建在后台运行的服务?的详细内容,更多请关注其它相关文章!
# c#
# app
# 惠州网站优化电话多少
# 阜阳企业网站建设
# 辽源快照seo优化
# 泰州推广互联网营销公司
# 吴忠seo公司找9火星
# 双语网站建设开发
# 多个
# 应用程序
# 开源
# 如何处理
# 这套
# 重写
# 你可以
# 如何使用
# 是一个
# 死锁
# .net
# microsoft
# ai
# 抖音推广代理商的营销
# 乐安网站建设价格
# 闵行区广告营销推广中心
# 长兴县营销活动推广
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
C++如何实现单例模式_C++线程安全的单例模式写法
mysql如何管理数据库账户_mysql数据库账户管理技巧
J*aScript模块加载器_RequireJS原理分析
SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱
使用jQuery精确检测除指定元素外任意位置的点击事件
Apple Music无故扣费引质疑
解决Windows上Composer PATH变量冲突导致的命令无法识别问题
繁花漫画使用教程
蜻蜓FM如何设置移动流量播放
《画加》约稿流程
网易云音乐闹钟铃声设置教程
iSpring三分屏制作教程
汽水音乐在线入口 汽水音乐网页端官方页面快速打开
使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel
如何取消数字签名
海外搜索引擎推广效果怎么样,怎么分析效果!
搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能
VS Code如何设置默认配置
《雷电模拟器》自动点击设置方法
苹果手机怎么合并照片_苹果手机合并多张照片的操作方法
如何在CSS中使用伪类:valid实现表单验证提示_结合:valid改变边框颜色
快递查询,一键速查
解决CSS容器溢出问题:使用calc()实现精确布局与边距控制
从HTML表单获取逗号分隔值并转换为NumPy数组进行预测
Go反射进阶:访问内嵌结构体中的被遮蔽方法
C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较
《大润发优鲜》充值方法介绍
在PHP环境中正确加载HTML资源:CSS样式与图片路径指南
iPhone12是否要更新ios16
Mac hosts文件在哪里_Mac修改hosts文件详细教程
百度网盘网页入口链接分享 百度网盘官网入口网页登录
《kimi智能助手》制作ppt教程
AO3官方镜像链接 | 最新防走失网址永久收藏
Win10截图远程协助 Win10远程桌面截屏法【场景应用】
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
WooCommerce 新客户订单自动添加管理员备注教程
汽水音乐官网网页版入口 汽水音乐官网网页版在线入口
J*a中导出MySQL表为SQL脚本的两种方法
《百果园》充值余额方法
在VS Code中进行数据科学和机器学习开发
抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍
Python测试中模块导入路径解析的最佳实践
windows10怎么关闭自动安装应用_windows10禁止推广应用下载
批改网网页版登录 批改网电脑版学生登录入口
金牛福袋获取攻略
Python实时数据流中高效查找最大最小值
PDF如何批量加注释_PDF多文件批注高亮操作教程
优化 React onClick 事件处理:函数引用与箭头函数的对比
菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤
服装短视频如何起号推广?服装短视频起号推广有什么要求?
2025-11-22
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。