CA2001: Evitar llamar a métodos problemáticos

Elemento Valor
RuleId CA2001
Category Microsoft.Reliability
Cambio importante Poco problemático

Causa

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

Descripción de la regla

Evite realizar llamadas de métodos potencialmente peligrosas e innecesarias. Una infracción de esta regla se produce cuando un miembro llama a uno de los métodos siguientes:

Método Descripción
System.GC.Collect Llamar a GC.Colllect puede afectar bastante al rendimiento de la aplicación y no suele ser necesaria. Para obtener más información, vea la entrada del blog Tidbits de rendimiento de Rico Mariani en MSDN.
System.Threading.Thread.Resume

System.Threading.Thread.Suspend
Thread.Suspend y Thread.Resume han quedado en desuso debido a su comportamiento imprevisible. Utilice otras clases en el espacio de nombres System.Threading, como Monitor, Mutex y Semaphore, para sincronizar los subprocesos o proteger los recursos.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle El método DangerousGetHandle supone un riesgo de seguridad porque puede devolver un identificador que no es válido. Para obtener más información sobre cómo usar el método DangerousGetHandle de forma segura, vea los métodos DangerousAddRef y DangerousRelease.
System.Reflection.Assembly.LoadFrom

System.Reflection.Assembly.LoadFile

System.Reflection.Assembly.LoadWithPartialName
Estos métodos pueden cargar ensamblados desde ubicaciones inesperadas. Por ejemplo, vea las entradas de blog de Notas de .NET CLR de Suzanne Cook LoadFile frente a LoadFrom y Selección de un contexto de enlace para obtener información sobre los métodos que cargan ensamblados.
CoSetProxyBlanket

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

Si tiene que llamar a CoSetProxyBlanket para una aplicación administrada, se recomienda iniciar el proceso mediante un archivo ejecutable de código nativo (C++), llamar a CoSetProxyBlanket en el código nativo y, después, iniciar la aplicación de código administrado en proceso. (Asegúrese de especificar un número de versión del runtime).

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 las advertencias

Suprima los mensajes de esta regla solo cuando no haya ninguna alternativa al método problemático disponible.

Consulte también