次の方法で共有


CA2004: GC.KeepAlive への呼び出しを削除します

Item [値]
規則 ID CA2004
カテゴリ Microsoft.Reliability
互換性に影響する変更点 なし

原因

クラスでは SafeHandle を使用しますが、引き続き GC.KeepAlive の呼び出しが含まれています。

規則の説明

SafeHandle の使用に変換する場合、GC.KeepAlive (オブジェクト) の呼び出しをすべて削除します。 この場合、クラスではファイナライザーがなくても、SafeHandle に依存して OS ハンドルを完了すると仮定すると、GC.KeepAlive を呼び出す必要はありません。 GC.KeepAlive を呼び出したままにしておいてもパフォーマンス面での損失はごくわずかかもしれませんが、もう存在していない可能性がある有効期間の問題の解決に GC.KeepAlive の呼び出しが必要であるか呼び出しで十分であると認識することで、コードの保守が困難になります。

違反の修正方法

GC.KeepAlive の呼び出しを削除します。

どのようなときに警告を抑制するか

この警告を抑制できるのは、クラスで SafeHandle の使用への変換が技術的に正しくない場合のみです。