Partager via


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

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Catégorie

Microsoft.Reliability

Modification avec rupture

Modification 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 déclenche lorsqu'un membre appelle l'une des méthodes suivantes.

Méthode

Description

GC.Collect

L'appel de GC.Collect peut affecter de manière significative les performances des applications et est rarement nécessaire.Pour plus d'informations, consultez l'entrée de blog Performance TidBits de Mariani Rico sur MSDN.

Thread.Resume

Thread.Suspend

Thread.Suspend et Thread.Resume ont été déconseillées à cause de leur comportement imprévisible. Utilisez d'autres classes dans l'espace de noms System.Threading, telles que Monitor, [T:System.Threading.Mutex,]Mutex, et Semaphore, pour synchroniser les threads ou protéger les ressources.

SafeHandle.DangerousGetHandle

La méthode DangerousGetHandle introduit un risque en matière de sécurité car elle peut retourner un handle qui n'est pas valide.Consultez les méthodes DangerousAddRef et DangerousRelease pour plus d'informations sur l'utilisation de la méthode DangerousGetHandle de manière sûre.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Ces méthodes peuvent charger des assemblys à partir d'emplacements inattendus.Par exemple, consultez les publications sur le blog .NET CLR de Suzanne Cook LoadFile vs. LoadFrom et Choisir un contexte de liaison sur le site Web MSDN pour plus d'informations sur les méthodes qui chargent des assemblys.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

Lorsque le code utilisateur commence à s'exécuter dans un processus managé, il est trop tard pour appeler CoSetProxyBlanket de manière fiable.CLR (Common Language Runtime) effectue les actions d'initialisation qui peuvent empêcher les utilisateurs P/Invoke de réussir.

Si vous devez appeler CoSetProxyBlanket pour une application managée, nous recommandons que vous démarriez le processus à l'aide d'un fichier exécutable de code natif (C++), appelez CoSetProxyBlanket en code natif, puis démarrez votre application de code managé dans le processus. (Assurez-vous de spécifier un numéro de version du runtime.)

Comment corriger les violations

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

Quand supprimer les avertissements

Vous ne devez supprimer des messages de cette règle que lorsqu'il n'existe aucune alternative à la méthode problématique.

Voir aussi

Autres ressources

Avertissements liés à la fiabilité