移除对 GC.KeepAlive 的调用
更新:2007 年 11 月
TypeName |
RemoveCallsToGCKeepAlive |
CheckId |
CA2004 |
类别 |
Microsoft.Reliability |
是否重大更改 |
否 |
原因
类使用 SafeHandle,但是仍包含对 GC.KeepAlive 的调用。
规则说明
如果转换为使用 SafeHandle,请移除所有对 GC.KeepAlive (object) 的调用。在这种情况下,类不必调用 GC.KeepAlive,并假定它们没有终结器,但是依赖 SafeHandle 来为它们完成 OS 句柄。尽管从性能上来讲,保留对 GC.KeepAlive 的调用的成本可以忽略不计,但是,认为调用 GC.KeepAlive 是解决也许已不再存在的生存期问题的必要条件或充分条件,会使代码更难以维护。
如何修复冲突
移除对 GC.KeepAlive 的调用。
何时禁止显示警告
只有当转换为在类中使用 SafeHandle 在技术上不正确时,才可以禁止显示此警告。