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