破棄された 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)
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET