CA2004: Remove calls to GC.KeepAlive
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, use the version selector at the top left. We recommend upgrading to Visual Studio 2019. Download it here
SafeHandle but still contain calls to
If you are converting to
SafeHandle usage, remove all calls to
GC.KeepAlive (object). In this case, classes should not have to call
GC.KeepAlive,assuming they do not have a finalizer but rely on
SafeHandle to complete the OS handle for them. Although the cost of leaving in a call to
GC.KeepAlive might be negligible as measured by performance, the perception that a call to
GC.KeepAlive is either necessary or sufficient to solve a lifetime issue that might no longer exist makes the code harder to maintain.
How to Fix Violations
Remove calls to
When to Suppress Warnings
You can suppress this warning only if it is not technically correct to convert to
SafeHandle usage in your class.