Condividi tramite


CA2001: Evitare le chiamate a metodi problematici

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Categoria

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 potenzialmente pericolosi e superflui.

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

Metodo

Descrizione

GC.Collect

La chiamata di GC.Collect può incidere in modo significativo sulle prestazioni dell'applicazione ed è raramente necessaria.Per ulteriori informazioni, vedere il post Considerazioni di Rico Mariani sul blog di MSDN.

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 del blog delle note di CLR .NET di Suzanne Cook's LoadFile vs. LoadFrom e Choosing a Binding Context nel sito Web MSDN per informazioni sui metodi di caricamento degli 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à