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

Evite realizar llamadas a métodos potencialmente peligrosas e innecesarias.Avoid making unnecessary and potentially dangerous method calls. Una infracción de esta regla se produce cuando un miembro llama a uno de los métodos siguientes:A violation of this rule occurs when a member calls one of the following methods:

MétodoMethod DescripciónDescription
System.GC.Collect Una llamada 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 Performance Tidbits de Mariani entrada de blog en MSDN.For more information, see 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 un comportamiento impredecible.Thread.Suspend and Thread.Resume have been deprecated because of their unpredictable behavior. Use otras clases en el System.Threading espacio de nombres, como Monitor, Mutex, y Semaphorepara sincronizar los subprocesos o proteger los recursos.Use other classes in the System.Threading namespace, such as Monitor, Mutex, and Semaphore, to synchronize threads or protect resources.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle El método DangerousGetHandle plantea 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, ver entradas de blog de .NET CLR notas de Suzanne Cook LoadFile vs. LoadFrom y elegir un contexto de enlace para obtener información acerca de los métodos que cargan los ensamblados.For example, see Suzanne Cook's .NET CLR Notes blog posts LoadFile vs. LoadFrom and Choosing a Binding Context 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 comienza 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 las acciones de inicialización que pueden impedir que los usuarios de P/Invoke que sigue.The common language runtime (CLR) takes initialization actions that may prevent the users P/Invoke from succeeding.

Si es necesario llamar a CoSetProxyBlanket para una aplicación administrada, se recomienda iniciar el proceso mediante el uso de 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 solo 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