SuperAPI AI 工具集

dotnet-background-services

通用与其它

查看项目

更新于 10-16 07:23

技能介绍

用途:为 .NET 应用实现长时间运行的后台工作,涵盖 BackgroundService、IHostedService、托管服务生命周期与优雅关闭。

主要能力:区分 BackgroundService(长循环、持续工作,重写 ExecuteAsync)与 IHostedService(启动/关闭钩子,实现 StartAsync 与 StopAsync);讲解启动顺序(按注册顺序调用 StartAsync,ExecuteAsync 并发运行,宿主不等待其结束)与关闭顺序(反向调用 StopAsync,取消停止令牌后等待 ExecuteAsync 完成);提供轮询工作器、缓存预热、资源生命周期、Channel 队列消费、PeriodicTimer 周期任务等模式。

必要用法:BackgroundService 为单例,应注入 IServiceScopeFactory 而非作用域服务,并在循环内创建作用域;用 AddHostedService<T>() 注册;循环体需 try/catch 处理异常,尊重 stoppingToken,空转或出错时用 Task.Delay 退避;可通过 HostOptions.ShutdownTimeout 调整关闭超时(默认 30 秒)。

限制与注意:不要用 Task.Run 做后台工作,不要吞掉 OperationCanceledException,不要用 Thread.Sleep,不要忘记注册。DI 注册机制、异步模式、项目脚手架、测试策略与 Channel 基础分别参见其他技能,本文不展开。