CA2004: GC.KeepAlive への呼び出しを削除します
TypeName |
RemoveCallsToGCKeepAlive |
CheckId |
CA2004 |
分類 |
Microsoft.Reliability |
互換性に影響する変更点 |
なし |
原因
クラスが SafeHandle を使用していますが、まだ GC.KeepAlive の呼び出しが含まれています。
規則の説明
SafeHandle の使用に変更する場合、すべての GC.KeepAlive (object) の呼び出しを削除します。この場合、クラスに GC.KeepAlive の呼び出しを含めることはできません。クラスはファイナライザーを持っていない代わりに、SafeHandle を使用して OS ハンドルを終了していることが前提となっています。GC.KeepAlive の呼び出しが残っていても、パフォーマンスの面では問題はありませんが、GC.KeepAlive の呼び出しが、既に存在しない可能性のある有効期間の問題を解決するために必要か、または有効であるという認識があるため、コードの保守が困難になります。
違反の修正方法
GC.KeepAlive の呼び出しを削除します。
警告を抑制する状況
クラスで SafeHandle の使用に変更することが技術的に不適切である場合のみ、この警告を抑制できます。