CA2001:避免呼叫有問題的方法
型別名稱 |
AvoidCallingProblematicMethods |
CheckId |
CA2001 |
分類 |
Microsoft.Reliability |
中斷變更 |
中斷 |
原因
成員呼叫了可能有危險或問題的方法。
規則描述
請避免進行非必要且可能有危險的方法呼叫。
當成員呼叫下列其中一個方法時,便會發生這項規則的違規。
方法 |
描述 |
---|---|
呼叫 GC.Collect 可能大幅影響應用程式效能,而且幾乎不必要。 如需詳細資,訊請參閱 MSDN 上的 Rico Mariani 的效能趣聞 (英文) 部落格項目。 |
|
Thread.Suspend 和 Thread.Resume 已因無法預期的行為而被取代。 使用 System.Threading 中的其他類別 (例如 Monitor、[T:System.Threading.Mutex,]、Mutex 和 Semaphore) 來同步處理執行緒或保護資源。 |
|
DangerousGetHandle 方法會帶來安全性風險,因為它可以傳回不正確的控制代碼。 如需如何安全使用 DangerousGetHandle 方法的詳細資訊,請參閱 DangerousAddRef 和 DangerousRelease 方法。 |
|
這些方法可以從未預期的位置載入組件。 例如,如需載入組件之方法的詳細資訊,請參閱 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 程式碼應用程式。 (請務必指定執行階段版本號碼)。 |
如何修正違規
若要修正此規則的違規情形,請移除或替換對有危險或問題之方法的呼叫。
隱藏警告的時機
唯有當沒有其他方法可用來取代有問題的方法時,才能隱藏這個規則的訊息。