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