Compartir a través de


CA2001: Evitar llamar a métodos problemáticos

Nombre de tipo

AvoidCallingProblematicMethods

Identificador de comprobación

CA2001

Categoría

Microsoft.Reliability

Cambio problemático

Poco problemático

Causa

Un miembro llama a un método potencialmente peligroso o problemático.

Descripción de la regla

Evite realizar llamadas a métodos potencialmente peligrosas e innecesarias.

Esta regla se infringe cuando un miembro llama a uno de los métodos siguientes.

Método

Descripción

GC.Collect

Llamar a GC.Collect puede afectar al rendimiento de la aplicación significativamente y rara vez es necesario. Para obtener más información, vea la entrada de registro Rico Mariani's Performance Tidbits en MSDN.

Thread.Resume

Thread.Suspend

Thread.Suspend y Thread.Resume han quedado en desuso debido a su comportamiento impredecible. Utilice otras clases del espacio de nombres System.Threading, como Monitor, [T:System.Threading.Mutex,], Mutex y Semaphore para sincronizar los subprocesos o proteger los recursos.

SafeHandle.DangerousGetHandle

El método DangerousGetHandle supone un riesgo para la seguridad porque puede devolver un controlador que es no válido. Vea los métodos DangerousAddRef y DangerousRelease para obtener más información sobre cómo utilizar el método DangerousGetHandle de forma segura.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Estos métodos pueden cargar ensamblados desde ubicaciones inesperadas. Por ejemplo, vea las entradas de blog de Suzanne Cook's .NET CLR Notes LoadFile vs. LoadFrom y Choosing a Binding Context en el sitio web de MSDN para obtener información sobre los métodos que cargan ensamblados.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

Cuando el código de usuario comienza a ejecutarse en un proceso administrado, es demasiado tarde para llamar de forma confiable a CoSetProxyBlanket. Common Language Runtime (CLR) toma medidas de inicialización que pueden impedir que los usuarios usen P/Invoke con éxito.

Si necesita llamar a CoSetProxyBlanket para una aplicación administrada, se recomienda que inicie el proceso mediante un ejecutable de código nativo (C++), llame a CoSetProxyBlanket en el código nativo y, a continuación, inicie la aplicación de código administrado en proceso. (Asegúrese de especificar el número de versión del motor en tiempo de ejecución.)

Cómo corregir infracciones

Para corregir una infracción de esta regla, quite o reemplace la llamada al método peligroso o problemático.

Cuándo suprimir advertencias

Solo debería suprimir los mensajes de esta regla cuando no haya otra alternativa disponible al método problemático.

Vea también

Otros recursos

Advertencias de confiabilidad