共用方式為


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

這些方法可以從未預期的位置載入組件。 例如,如需載入組件之方法的詳細資訊,請參閱 MSDN 網站中 Suzanne Cook 的 .NET CLR Notes 部落格文章 LoadFile 與 LoadFrom.(英文)。

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

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

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

如何修正違規

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

隱藏警告的時機

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

請參閱

其他資源

可靠性警告