用途:指导在 .NET 中构建长驻后台服务或定时任务,向应用添加托管服务、把托管服务拆分为独立 worker 进程,并审查优雅关闭、取消、队列处理与健康状态。
主要能力:以 BackgroundService 为基类,仅实现 ExecuteAsync,由基类处理 StartAsync/StopAsync 与取消;用 IServiceScopeFactory 为 scoped 依赖(如 DbContext)创建作用域;全程传递取消令牌实现优雅关闭;用 PeriodicTimer 替代 Task.Delay 做定时任务;在 loop 内 try-catch 避免异常导致服务崩溃;通过 IHealthCheck 暴露就绪/存活探针;队列模式用 IBackgroundTaskQueue 的 QueueBackgroundWorkItemAsync/DequeueAsync 配合 worker 消费并处理毒消息。
使用方式:程序入口用 Host.CreateApplicationBuilder(args),注册 AddHostedService<Worker>();Windows 服务场景加 AddWindowsService(options => options.ServiceName = "My Worker Service"),项目用 Microsoft.NET.Sdk.Worker,可设 PublishSingleFile、SelfContained。示例代码展示简单 worker、定时 worker、scoped worker、队列 worker、自定义健康检查与优雅关闭模式。
适用场景:定时数据处理、队列消费、Windows 服务、多实例下的分布式锁与可观测性。
限制与反模式:不要用临时 while(true) 循环,不要忽略取消令牌,不要直接注入 scoped 服务,不要在 ExecuteAsync 里留未捕获异常,不要阻塞 StartAsync,不要用 async void,缺失健康检查。多实例扩展需自行评估是否拆分独立 worker 项目;具体包版本、收费与平台支持资料暂未提供。