共用方式為


CA2001:避免呼叫有問題的方法

型別名稱

AvoidCallingProblematicMethods

CheckId

CA2001

分類

Microsoft.Reliability

中斷變更

中斷

原因

成員呼叫了可能有危險或問題的方法。

規則描述

請避免進行非必要且有潛在危險的方法呼叫。

當成員呼叫下列其中一個方法時,便會發生這項規則的違規。

方法

說明

GC.Collect

呼叫 GC.Collect 可能大幅影響應用程式效能,而且幾乎不必要。如需詳細資訊,請參閱 MSDN 上 Rico Mariani 的效能報導 的部落格項目。

Thread.Resume

Thread.Suspend

Thread.Suspend 和 Thread.Resume 已因無法預期的行為而被取代。使用 System.Threading 中的其他類別 (例如 Monitor、[T:System.Threading.Mutex,]、MutexSemaphore) 來同步處理執行緒或保護資源。

SafeHandle.DangerousGetHandle

DangerousGetHandle 方法會帶來安全性風險,因為它可以傳回不正確的控制代碼。如需如何安全使用 DangerousGetHandle 方法的詳細資訊,請參閱 DangerousAddRefDangerousRelease 方法。

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

這些方法可以從未預期的位置載入組件。例如,請看 Suzanne Cook 的 .NET CLR 筆記部落格文章 LoadFile 與 LoadFrom 和 MSDN 網站上的 選取繫結內容,參閱有關裝載組件之方法的資訊。

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

等到使用者程式碼開始在 Managed 處理序中執行時,才要正常呼叫 CoSetProxyBlanket,已經太遲了。Common Language Runtime (CLR) 會採取初始設定動作,而這些動作可能導致使用者 P/Invoke 無法執行成功。

如果您需要呼叫 Managed 應用程式的 CoSetProxyBlanket,建議您使用機器碼 (C++) 可執行檔啟動處理序、在機器碼中呼叫 CoSetProxyBlanket,然後在處理序中啟動 Managed 程式碼應用程式。(請務必指定執行階段版本號碼)。

如何修正違規

若要修正此規則的違規情形,請移除或替換對有危險或問題之方法的呼叫。

隱藏警告的時機

唯有當沒有其他方法可用來取代有問題的方法時,才能隱藏這個規則的訊息。

請參閱

其他資源

可靠性警告