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.