如何在.NET MAUI Windows应用中创建并运行BackgroundService?
解决.NET MAUI Windows应用中BackgroundService未启动的问题
针对你遇到的BackgroundService未启动、无日志输出的问题,可从以下几个方向排查修复:
1. 修正服务类的访问修饰符
你的TcpListenerService使用默认的internal访问级别,若MauiProgram所在命名空间与服务类不同,依赖注入系统无法创建该服务实例。需将服务类改为public:
public class TcpListenerService : BackgroundService { // 原有代码保持不变 }
2. 调整日志级别配置
.NET MAUI默认日志级别较高,LogInformation级别的消息可能被过滤。在MauiProgram.cs中添加日志级别配置,确保信息级日志能输出:
var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() // 添加日志过滤配置 .ConfigureLogging(logging => { logging.AddFilter("*", LogLevel.Information); }); // 注册HostedService builder.Services.AddHostedService<Services.TcpListenerService>();
3. 验证注册的命名空间正确性
确保注册时指定的Services.TcpListenerService完全匹配服务类的命名空间。若不确定,可使用typeof来避免命名空间拼写错误:
builder.Services.AddHostedService(typeof(Services.TcpListenerService));
4. 确认Windows平台的后台任务行为
在Windows平台,若应用被系统判定为进入后台(如窗口最小化),后台服务可能被暂停。测试时保持应用窗口处于前台,同时可在服务中添加LogWarning级别的日志(默认不会被过滤),快速验证服务是否启动。
内容的提问来源于stack exchange,提问作者SwiftWombat
相关产品推荐
相关产品推荐

