Is the CreateScope from IServiceProvider thread safe?

37 views Asked by At

I've got a code snippet that looks a bit like this:

// Program.cs
services.AddScoped<IMyService, MyService>();
services.AddSingleton<SingletonService>();
// SingletonService.cs
public class SingletonService
{
    private readonly IServiceProvider _serviceProvider;

    public SingletonService(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider;

    public bool DoSomething(Foo foo)
    {
        using var scope = _serviceProvider.CreateScope();
        var service = scope.ServiceProvider.GetRequiredService<IMyService>();

        service.Data = foo;
        return service.ProcessData();
    }
}

Is the DoSomething method thread-safe in this context, considering the shared _serviceProvider and the use of CreateScope?

I couldn't find any information about this in the docs.

0

There are 0 answers