Новый .NET Core «Generic Host» показался хорошим выбором для реализации консольного приложения, которое выполняет несколько параллельных задач.Вместо того, чтобы явно создавать и запускать задачи, я подумал, что смогу определить их как сервисы, используя IHostedService (или BackgroundService).Тем не менее, Generic Host выполняет все мои так называемые «фоновые задачи» в одном потоке.Это предполагаемое поведение?
public static async Task Main(string[] args)
{
var host = new HostBuilder()
.ConfigureHostConfiguration(...)
.ConfigureAppConfiguration(...)
.ConfigureServices((hostContext, services) =>
{
services.AddLogging();
services.AddHostedService<Service1>();
services.AddHostedService<Service2>();
services.AddHostedService<Service3>();
})
.ConfigureLogging(...)
.UseConsoleLifetime()
.Build();
await host.RunAsync();
}
Общий хост запускает все три моих "фоновых" сервиса в одном потоке.Thread.CurrentThread.ManagedThreadId
было найдено равным 1 в главном потоке и в методах StartAsync или ExecuteAsync каждой из "фоновых" служб.Есть ли способ убедиться, что службы работают в отдельных потоках?