CA2001 : Évitez d'appeler des méthodes susceptibles de poser des problèmes

Élément Valeur
ID de la règle CA2001
Category Microsoft.Reliability
Modification avec rupture Sans rupture

Cause

Un membre appelle une méthode potentiellement dangereuse ou problématique.

Description de la règle

Évitez l’appel de méthodes inutiles et potentiellement dangereuses. Une violation de cette règle se produit quand un membre appelle l’une des méthodes suivantes :

Méthode Description
System.GC.Collect Un appel de GC.Collect peut affecter considérablement les performances de l’application, ce qui est rarement nécessaire. Pour plus d’informations, consultez l’entrée de blog Rico Mariani’s Performance Tidbits sur MSDN.
System.Threading.Thread.Resume

System.Threading.Thread.Suspend
Thread.Suspend et Thread.Resume ont été dépréciés en raison de leur comportement imprévisible. Utilisez d’autres classes dans l’espace de noms System.Threading, comme Monitor, Mutex et Semaphore, pour synchroniser les threads ou protéger les ressources.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle La méthode DangerousGetHandle présente un risque pour la sécurité, car elle peut retourner un descripteur qui n’est pas valide. Pour plus d’informations sur la manière d’utiliser la méthode DangerousGetHandle en toute sécurité, consultez les méthodes DangerousAddRef et DangerousRelease.
System.Reflection.Assembly.LoadFrom

System.Reflection.Assembly.LoadFile

System.Reflection.Assembly.LoadWithPartialName
Ces méthodes peuvent charger des assemblys à partir d’emplacements inattendus. Par exemple, consultez les billets de blog .NET CLR Notes de Suzanne Cook LoadFile vs. LoadFrom et Choosing a Binding Context pour plus d’informations sur les méthodes qui chargent des assemblys.
CoSetProxyBlanket

CoInitializeSecurity
À partir du moment où le code utilisateur commence à s’exécuter dans un processus managé, il est trop tard pour appeler CoSetProxyBlanket de manière fiable. Le Common Language Runtime (CLR) effectue des actions d’initialisation qui peuvent empêcher les méthodes P/Invoke des utilisateurs de réussir.

Si vous devez appeler CoSetProxyBlanket pour une application managée, nous vous recommandons de démarrer le processus à l’aide d’un exécutable de code natif (C++), d’appeler CoSetProxyBlanket dans le code natif, puis de démarrer votre application de code managé en cours. (Veillez à spécifier un numéro de version du runtime.)

Comment corriger les violations

Pour corriger une violation de cette règle, supprimez ou remplacez l’appel à la méthode dangereuse ou problématique.

Quand supprimer les avertissements

Supprimez les messages de cette règle uniquement si aucune alternative à la méthode problématique n’est disponible.

Voir aussi