在 .NET Core 中,可以使用 .NET Core 的内置依赖注入容器来在 BackgroundService 中使用依赖注入。以下是一些步骤:

  1. 首先,您需要在 Startup.cs 文件中注册您想要注入的依赖项。例如,如果您想要注入一个名为 MyService 的服务,则可以在 ConfigureServices 方法中添加以下代码:
services.AddScoped<IMyService, MyService>();
  1. 在您的 BackgroundService 类中,您需要注入 IServiceProvider 以访问依赖项注入容器。您可以在构造函数中注入 IServiceProvider,如下所示:
public class MyBackgroundService : BackgroundService
{
    private readonly IServiceProvider _serviceProvider;

    public MyBackgroundService(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        // 在此处使用依赖项
        using (var scope = _serviceProvider.CreateScope())
        {
            var myService = scope.ServiceProvider.GetRequiredService<IMyService>();
            await myService.DoSomethingAsync();
        }
    }
}
  1. 在 ExecuteAsync 方法中,您可以使用 CreateScope 方法创建一个新的依赖项注入作用域,并使用 GetRequiredService 方法从该作用域中获取所需的依赖项。在此示例中,我们从作用域中获取 IMyService,并调用 DoSomethingAsync 方法。

请注意,使用 CreateScope 方法创建作用域是非常重要的,因为它确保所有依赖项都能够正确地被处理和释放。如果不使用作用域,则可能会导致内存泄漏或其他问题。

最后,您需要在您的 Startup.cs 文件中注册您的 BackgroundService。您可以在 ConfigureServices 方法中添加以下代码:

services.AddHostedService<MyBackgroundService>();

这将使 .NET Core 运行时在启动时自动创建和启动 MyBackgroundService。使用依赖项注入容器,您可以轻松地注入所需的依赖项并使用它们执行后台任务。

.NET Core BackgroundService 中使用依赖注入

原文地址: https://www.cveoy.top/t/topic/nSWv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录