CA2001: Evitare le chiamate a metodi problematici

Articolo Valore
ID regola CA2001
Category Microsoft.Reliability
Modifica Nessuna interruzione

Causa

Un membro chiama un metodo potenzialmente pericoloso o problematico.

Descrizione regola

Evitare di effettuare chiamate al metodo inutili e potenzialmente pericolose. Una violazione di questa regola si verifica quando un membro chiama uno dei metodi seguenti:

metodo Descrizione
System.GC.Collect Chiamata di GC. La raccolta può influire significativamente sulle prestazioni dell'applicazione ed è raramente necessaria. Per altre informazioni, vedere il post di blog di Rico Mariani Performance Tidbits su MSDN.
System.Threading.Thread.Resume

System.Threading.Thread.Suspend
Thread.Suspend e Thread.Resume sono stati deprecati a causa del comportamento imprevedibile. Usare altre classi nello spazio dei System.Threading nomi, ad esempio Monitor, Mutexe Semaphore, per sincronizzare i thread o proteggere le risorse.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle Il DangerousGetHandle metodo rappresenta un rischio per la sicurezza perché può restituire un handle non valido. Per altre informazioni su come usare il DangerousGetHandle metodo in modo sicuro, vedere i DangerousAddRef metodi e DangerousRelease .
System.Reflection.Assembly.LoadFrom

System.Reflection.Assembly.LoadFile

System.Reflection.Assembly.LoadWithPartialName
Questi metodi possono caricare assembly da posizioni impreviste. Ad esempio, per informazioni sui metodi che caricano assembly, vedere il blog delle note CLR .NET di Susan Cook e LoadFile vs. LoadFrom e Scelta di un contesto di associazione.
CoSetProxyBlanket

Coinitializesecurity
Al momento dell'avvio dell'esecuzione del codice utente in un processo gestito, è troppo tardi per chiamare CoSetProxyBlanketin modo affidabile . Common Language Runtime (CLR) esegue azioni di inizializzazione che potrebbero impedire agli utenti di eseguire operazioni P/Invoke.

Se è necessario chiamare CoSetProxyBlanket per un'applicazione gestita, è consigliabile avviare il processo usando un eseguibile di codice nativo (C++), chiamare CoSetProxyBlanket nel codice nativo e quindi avviare l'applicazione di codice gestito in fase di elaborazione. Assicurarsi di specificare un numero di versione di runtime.

Come correggere le violazioni

Per correggere una violazione di questa regola, rimuovere o sostituire la chiamata al metodo pericoloso o problematico.

Quando eliminare gli avvisi

Eliminare i messaggi da questa regola solo quando non sono disponibili alternative al metodo problematico.

Vedi anche