共用方式為


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 用法屬於技術上的錯誤時,才能隱藏這個警告。