解析已释放的 ServiceProvider 引发异常
在释放服务提供程序并解析某个服务后,受影响的方法现在会引发 ObjectDisposedException,而不是导致死锁。
引入的版本
6.0 RC 1
旧行为
以前,应用程序很少会在服务提供程序被释放后解析服务,并导致死锁。
新行为
从 .NET 6 开始,当某个服务在服务提供程序被释放后被解析时,将引发 ObjectDisposedException,而不会发生死锁。
中断性变更的类型
此项更改可能会影响源兼容性。
更改原因
引入此变更是为了解决死锁情况。
建议操作
调用任何受影响的 API 时捕获 ObjectDisposedException。
受影响的 API
- System.IServiceProvider.GetService(Type)
- Microsoft.Extensions.DependencyInjection.ISupportRequiredService.GetRequiredService(Type)
- Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider, Type)
- Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<T>(IServiceProvider)