A resolução de ServiceProvider descartado gera exceção
Quando um serviço é resolvido depois que o provedor de serviços é descartado, os métodos afetados agora geram uma ObjectDisposedException em vez de causar um deadlock.
Versão introduzida
6.0 RC 1
Comportamento anterior
Antes, no raro caso em que um aplicativo resolvia um serviço depois que o provedor de serviço era descartado, ocorria um deadlock.
Novo comportamento
Do .NET 6 em diante, uma ObjectDisposedException é gerada quando um serviço é resolvido depois que o provedor de serviços é descartado e não há deadlock.
Tipo de alteração interruptiva
Essa alteração pode afetar a compatibilidade da origem.
Motivo da alteração
Essa alteração foi introduzida para corrigir o cenário de deadlock.
Ação recomendada
Capture ObjectDisposedException ao chamar uma das APIs afetadas.
APIs afetadas
- System.IServiceProvider.GetService(Type)
- Microsoft.Extensions.DependencyInjection.ISupportRequiredService.GetRequiredService(Type)
- Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider, Type)
- Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<T>(IServiceProvider)