You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:07:07