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