HostedService 的多个实例

use*_*292 5 c# .net-core asp.net-core asp.net-core-hosted-services

我想运行同一托管服务的多个实例。我尝试注册它们两次:

services.AddHostedService<MyService>();
services.AddHostedService<MyService>();
Run Code Online (Sandbox Code Playgroud)

但 ExecuteAsync 仅在一个实例上调用。

但是,如果我有两种不同的服务:

services.AddHostedService<MyServiceA>();
services.AddHostedService<MyServiceB>();
Run Code Online (Sandbox Code Playgroud)

每一个都会调用 ExecuteAsync。

无论如何,有没有办法运行同一个实例两次?我本质上想让两个工作服务做同样的事情。

Ask*_*Ask 6

现在 .net core 中的行为发生了变化,AddHostedService 现在添加了 Singleton 而不是 Transient 服务。所以你可以尝试这个:

services.AddSingleton<IHostedService, MyService>();
Run Code Online (Sandbox Code Playgroud)

看看这个这个