CA2001: Evitar llamar a métodos problemáticosCA2001: Avoid calling problematic methods

TypeNameTypeName AvoidCallingProblematicMethodsAvoidCallingProblematicMethods
Identificador de comprobaciónCheckId CA2001CA2001
CategoríaCategory Microsoft.ReliabilityMicrosoft.Reliability
Cambio problemáticoBreaking Change Poco problemáticoNon-breaking

MotivoCause

Un miembro llama a un método potencialmente peligroso o problemático.A member calls a potentially dangerous or problematic method.

Descripción de la reglaRule Description

Evitar la realización de llamadas a métodos potencialmente peligrosas e innecesarias.Avoid making unnecessary and potentially dangerous method calls.

Cuando un miembro llama a uno de los métodos siguientes, se produce una infracción de esta regla.A violation of this rule occurs when a member calls one of the following methods.

MétodoMethod DescripciónDescription
System.GC.Collect Llamar a GC. Collect puede afectar significativamente al rendimiento de la aplicación y no suele ser necesario.Calling GC.Collect can significantly affect application performance and is rarely necessary. Para obtener más información, consulte el curiosidades sobre rendimiento de Rico Mariani entrada de blog en MSDN.For more information, see the Rico Mariani's Performance Tidbits blog entry on MSDN.
System.Threading.Thread.Resume

System.Threading.Thread.Suspend
Thread.Suspend y Thread.Resume han quedado en desuso debido a su comportamiento impredecible.Thread.Suspend and Thread.Resume have been deprecated because of their unpredictable behavior. Utilice otras clases de la System.Threading espacio de nombres, como Monitor, Mutex, Mutex, y Semaphore para sincronizar los subprocesos o proteger los recursos.Use other classes in the System.Threading namespace, such as Monitor, Mutex, Mutex, and Semaphore to synchronize threads or protect resources.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle El método DangerousGetHandle supone un riesgo de seguridad porque puede devolver un identificador que no es válido.The DangerousGetHandle method poses a security risk because it can return a handle that is not valid. Consulte la DangerousAddRef y DangerousRelease métodos para obtener más información acerca de cómo usar el método DangerousGetHandle de forma segura.See the DangerousAddRef and the DangerousRelease methods for more information about how to use the DangerousGetHandle method safely.
System.Reflection.Assembly.LoadFrom

System.Reflection.Assembly.LoadFile

System.Reflection.Assembly.LoadWithPartialName
Estos métodos pueden cargar ensamblados desde ubicaciones inesperadas.These methods can load assemblies from unexpected locations. Por ejemplo, vea las entradas de blog de .NET CLR Notes del Suzanne Cook LoadFile vs. LoadFrom y elegir un contexto de enlace en el sitio Web de MSDN para obtener información acerca de los métodos que cargan ensamblados.For example, see Suzanne Cook's .NET CLR Notes blog posts LoadFile vs. LoadFrom and Choosing a Binding Context on the MSDN Web site for information about methods that load assemblies.
CoSetProxyBlanket (Ole32)CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)CoInitializeSecurity (Ole32)
En el momento en que el código de usuario empieza a ejecutarse en un proceso administrado, es demasiado tarde para llamar de forma confiable a CoSetProxyBlanket.By the time the user code starts executing in a managed process, it is too late to reliably call CoSetProxyBlanket. Common language runtime (CLR) realiza acciones de inicialización que pueden impedir que los usuarios P/Invoke correctamente.The common language runtime (CLR) takes initialization actions that may prevent the users P/Invoke from succeeding.

Si tiene que llamar a CoSetProxyBlanket para una aplicación administrada, se recomienda que inicie el proceso mediante un archivo 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.If you do have to call CoSetProxyBlanket for a managed application, we recommend that you start the process by using a native code (C++) executable, call CoSetProxyBlanket in the native code, and then start your managed code application in process. (Asegúrese de especificar un número de versión en tiempo de ejecución).(Be sure to specify a runtime version number.)

Cómo corregir infraccionesHow to Fix Violations

Para corregir una infracción de esta regla, quite o reemplace la llamada al método peligroso o problemático.To fix a violation of this rule, remove or replace the call to the dangerous or problematic method.

Cuándo suprimir advertenciasWhen to Suppress Warnings

Se deben suprimir los mensajes de esta regla sólo cuando no hay alternativas al método problemático están disponibles.You should suppress messages from this rule only when no alternatives to the problematic method are available.

Vea tambiénSee Also

Advertencias de confiabilidadReliability Warnings