Sdílet prostřednictvím


CA2001: Zamezení volání metod problematické

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Kategorie

Microsoft.Reliability

Narušující změna

Nenarušující

Příčina

Člen volá potencionálně nebezpečnou nebo problematickou metodu.

Popis pravidla

Vyhněte se volání zbytečných a potenciálně nebezpečných metod.

K porušení tohoto pravidla dojde, když člen zavolá jednu z následujících metod.

Metoda

Popis

GC.Collect

Volání metody GC.Collect může podstatně ovlivnit výkon aplikace a je jen výjimečně nezbytné.Více informací naleznete v článku Rico Mariani's Performance Tidbits na stránkách MSDN blogu.

Thread.Resume

Thread.Suspend

Metody Thread.Suspend a Thread.Resume se již nepoužívají z důvodu jejich nepředvídatelného chování.Pro synchronizaci vláken a ochranu zdrojů lze použít třídy z oboru názvů System.Threading jako jsou například Monitor, [T:System.Threading.Mutex,], Mutex a Semaphore.

SafeHandle.DangerousGetHandle

Metoda DangerousGetHandle představuje bezpečnostní riziko, jelikož může vracet neplatný popisovač.Více informací o bezpečném použití metody DangerousGetHandle lze nalézt u metod DangerousAddRef a DangerousRelease.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Tyto metody mohou načíst sestavení z neočekávaných míst.Informace o metodách, které načítají sestavení lze například nalézt na stránkách blogu Suzanne Cook's .NET CLR Notes LoadFile VS. LoadFrom a v článku Výběr kontextu vazby na webových stránkách MSDN.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

Poté co je uživatelský kód spuštěn, nelze již metodu CoSetProxyBlanket spolehlivě zavolat.Modul CLR (Common Language Runtime) provádí inicializace, které mohou zabránit v úspěšném zavolání P/Invoke uživatelem.

Pokud je nutné zavolat pro spravovanou aplikaci metodu CoSetProxyBlanket, doporučujeme spustit proces použitím spustitelného souboru nativního kódu (C++), zavoláním metody CoSetProxyBlanket v tomto nativním kódu a poté v procesu spustit aplikaci se spravovaným kódem.(Je nutné specifikovat číslo verze modulu runtime!)

Jak vyřešit porušení

Porušení tohoto pravidla lze vyřešit odstraněním nebo nahrazením volání nebezpečné nebo problematické metody.

Kdy potlačit upozornění

Zprávy tohoto pravidla lze potlačit jedině, když nejsou k dispozici žádné alternativy k problematickým metodám.

Viz také

Další zdroje

Spolehlivost varování