Partilhar via


CA2001: Evite chamar métodos problemáticos

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

<strong>Categoria</strong>

Microsoft.Reliability

Alteração significativa

Não-separável

Causa

Um membro chama um método de potencialmente perigoso ou problemático.

Descrição da regra

Evite fazer chamadas de método desnecessário e potencialmente perigosos.

Uma violação desta regra ocorre quando um membro chama um dos seguintes métodos.

Método

Descrição

GC.Collect

Chamando o GC.Coletar pode afetar significativamente o desempenho do aplicativo e raramente é necessário. Para obter mais informações, consulte o Dados sobre o desempenho do Rico Mariani a entrada de blog no MSDN.

Thread.Resume

Thread.Suspend

Thread.Suspend e Thread.Resume foram excluídas por causa do comportamento imprevisível. Usar outras classes de System.Threading namespace, como Monitor, [T:System.Threading.Mutex,] Mutex, e Semaphore para sincronizar segmentos ou proteger recursos.

SafeHandle.DangerousGetHandle

O método DangerousGetHandle representa um risco de segurança, pois pode retornar um identificador que não é válido. Consulte o DangerousAddRef e o DangerousRelease métodos para obter mais informações sobre como usar o método DangerousGetHandle com segurança.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Esses métodos podem carregar assemblies de locais inesperados. Por exemplo, consulte Suzanne Cook.Observações do NET CLR postagens de blog LoadFile vs. LoadFrom e a escolha de um contexto de ligação no site do MSDN para obter informações sobre os métodos de carregar assemblies.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

No momento em que o código de usuário começa a ser executada em um processo gerenciado, é tarde demais confiável chamar CoSetProxyBlanket. O common language runtime (CLR) leva as ações de inicialização podem impedir que os usuários P/Invoke subseqüente.

Se você tiver que chamar CoSetProxyBlanket para um aplicativo gerenciado, recomendamos que você iniciar o processo usando um executável do código nativo (C++), chama CoSetProxyBlanket no código nativo e iniciar o seu aplicativo de código gerenciado no processo. (Certifique-se de especificar um número de versão do runtime.)

Como corrigir violações

Para corrigir uma violação desta regra, remover ou substituir a chamada ao método perigoso ou problemática.

Quando suprimir avisos

Você deve suprimir mensagens desta regra somente quando há alternativas para o método problemático estão disponíveis.

Consulte também

Outros recursos

Avisos de confiabilidade