Partilhar via


CA2001: Evitar 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ários 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 de seu comportamento imprevisível.Usar outras classes na System.Threading espaço para nome, 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 que 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) executa ações de inicialização que poderão impedir que os usuários P/Invoke subseqüente.

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

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