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 |
---|---|
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.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. |
|
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. |
|
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.