Condividi tramite


CA2001: Evitare le chiamate a metodi problematici

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Category

Microsoft.Reliability

Breaking Change

Non sostanziale

Causa

Un membro chiama un metodo potenzialmente pericoloso o problematico.

Descrizione della regola

Evitare di effettuare chiamate a metodi non necessarie e potenzialmente pericolose.

Quando un membro chiama uno dei seguenti metodi, si verifica una violazione di questa regola.

Metodo

Oggetto di descrizione

GC.Collect

La chiamata di GC.Collect può incidere in modo significativo sulle prestazioni dell'applicazione ed è raramente necessaria. Per ulteriori informazioni, vedere la voce del blog di Rico Mariani's Performance Tidbits su MSDN (informazioni in lingua inglese).

Thread.Resume

Thread.Suspend

Thread.Suspend e Thread.Resume sono stati deprecati a causa del comportamento imprevedibile. Utilizzare le altre classi nello spazio dei nomi System.Threading, ad esempio Monitor, [T:System.Threading.Mutex,], Mutex e Semaphore per sincronizzare i thread o proteggere le risorse.

SafeHandle.DangerousGetHandle

Il metodo DangerousGetHandle pone un problema di sicurezza perché può restituire un handle che non è valido. Per ulteriori informazioni su come utilizzare il metodo DangerousGetHandle in modo sicuro, vedere i metodi DangerousAddRef e DangerousRelease.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Questi metodi possono caricare assembly dai percorsi non previsti. Ad esempio, vedere i post di blog .NET CLR Notes di Suzanne Cook LoadFile vs. LoadFrom e Scegliere un contesto di associazione sul sito web di MSDN per le informazioni sui metodi che caricano gli assembly.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

Una volta avviata l'esecuzione del codice utente in un processo gestito, è troppo tardi per chiamare CoSetProxyBlanket in modo affidabile. In CLR (Common Language Runtime) vengono adottate misure che potrebbero impedire l'esito positivo di P/Invoke.

Se è necessario chiamare CoSetProxyBlanket per un'applicazione gestita, si consiglia di avviare il processo utilizzando un file eseguibile di codice nativo (C++), chiamare CoSetProxyBlanket nel codice nativo, quindi avviare l'applicazione in codice gestito nel processo. 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.

Esclusione di avvisi

È necessario eliminare i messaggi da questa regola solo quando non sono disponibili alternative al metodo problematico.

Vedere anche

Altre risorse

Avvisi di affidabilità