在.NET Core 3.0及以上版本中,后台服务(BackgroundService)不会阻塞应用程序的启动。如果需要等待后台服务启动完成后再启动应用程序,可以在Main方法中使用async/await等待后台服务的启动完成。
示例代码:
// Program.cs
using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting;
namespace MyApplication
{
public class Program
{
public static async Task Main(string[] args)
{
var hostBuilder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService
var host = hostBuilder.Build();
await host.StartAsync(); // 等待后台服务启动完成
// 执行应用程序逻辑
// ...
await host.StopAsync(); // 停止后台服务
}
}
// MyBackgroundService.cs
using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting;
namespace MyApplication { public class MyBackgroundService : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { // 后台服务逻辑 // ...
await Task.CompletedTask;
}
}
}