要并行启动多个AddHostedService服务,可以使用Microsoft.Extensions.Hosting.HostBuilder类的Run方法。下面是一个示例代码:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
public static async Task Main(string[] args)
{
await CreateHostBuilder(args).Build().RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService();
services.AddHostedService();
services.AddHostedService();
});
}
public class Service1 : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("Service1 is running.");
await Task.Delay(1000, stoppingToken);
}
}
}
public class Service2 : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("Service2 is running.");
await Task.Delay(1000, stoppingToken);
}
}
}
public class Service3 : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("Service3 is running.");
await Task.Delay(1000, stoppingToken);
}
}
}
在上面的示例中,CreateHostBuilder方法配置了三个AddHostedService服务(Service1、Service2和Service3)。通过调用Build方法创建主机,然后调用RunAsync方法并行启动所有服务。
每个服务都需要继承自Microsoft.Extensions.Hosting.BackgroundService类,并实现ExecuteAsync方法。在这个方法中,可以编写服务的逻辑代码。在示例中,每个服务都会每秒输出一条消息。
请注意,这只是一个示例,具体的服务实现可能会根据需求而有所不同。