Несколько экземпляров HostedService

Я хочу запустить несколько экземпляров одной и той же размещенной службы. Я пытался зарегистрировать их дважды:

services.AddHostedService<MyService>();
services.AddHostedService<MyService>();

Но ExecuteAsync вызывается только для одного экземпляра.

Однако, если у меня есть две разные услуги:

services.AddHostedService<MyServiceA>();
services.AddHostedService<MyServiceB>();

ExecuteAsync вызывается для каждого из них.

Можно ли запустить один и тот же экземпляр дважды? По сути, я хочу, чтобы две рабочие службы делали одно и то же.


person user472292    schedule 12.03.2021    source источник


Ответы (1)


Теперь поведение изменено в ядре .net, и AddHostedService теперь добавляет Singleton вместо службы Transient. Итак, вы можете попробовать это:

services.AddSingleton<IHostedService, MyService>();

См. это и это

person Ask    schedule 12.03.2021