共用方式為


移除對 GC.KeepAlive 發出的呼叫

更新:2007 年 11 月

型別名稱

RemoveCallsToGCKeepAlive

CheckId

CA2004

分類

Microsoft.Reliability

中斷變更

非中斷

原因

類別使用 SafeHandle,但仍包含對 GC.KeepAlive 的呼叫。

規則描述

如果轉換成 SafeHandle 用法,則會移除對 GC.KeepAlive (物件) 的所有呼叫。在此情況下,類別不一定要呼叫 GC.KeepAlive,假設它們沒有完成項,但會根據 SafeHandle 最終處理其 OS 控制代碼。即使以效能的觀點來看,保留 GC.KeepAlive 呼叫的成本並不會有任何影響,但是可用於解決不再存在之存留期 (Lifetime) 問題的 GC.KeepAlive 呼叫會讓程式碼的維護更為困難。

如何修正違規

移除對 GC.KeepAlive 的呼叫。

隱藏警告的時機

只有轉換成 SafeHandle 用法屬於技術上的錯誤時,才能隱藏這個警告。