Freigeben über


CA2001: Keine problematischen Methoden aufrufen

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Kategorie

Microsoft.Reliability

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Ein Member ruft eine möglicherweise gefährliche oder problematische Methode auf.

Regelbeschreibung

Vermeiden Sie unnötige und möglicherweise gefährliche Methodenaufrufe.

Eine Verletzung dieser Regel tritt auf, wenn ein Member eine der folgenden Methoden aufruft.

Methode

Beschreibungen

GC.Collect

Der Aufruf von GC.Collect kann die Anwendungsleistung bedeutend beeinträchtigen und ist selten notwendig. Weitere Informationen finden Sie im Leistungstipps von Rico Mariani-Blogeintrag unter MSDN.

Thread.Resume

Thread.Suspend

"Thread.Suspend" und "Thread.Resume" sind wegen ihres unvorhersehbaren Verhaltens nun veraltet. Verwenden Sie andere Klassen im System.Threading-Namespace, z. B. Monitor, [T:System.Threading.Mutex,], Mutex und Semaphore, um Threads zu synchronisieren oder Ressourcen zu schützen.

SafeHandle.DangerousGetHandle

Die DangerousGetHandle-Methode stellt ein Sicherheitsrisiko dar, da es ein Handle zurückgeben kann, das nicht gültig ist. Weitere Informationen zum sicheren Verwenden der DangerousGetHandle-Methode finden Sie in der DangerousAddRef-Methode und in der DangerousRelease-Methode.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Diese Methoden können Assemblys von unerwarteten Speicherorten laden. Sehen Sie sich Suzanne Cook's .NET CLR Notes-Blogbeiträge auf der MSDN-Website an, z. B. LoadFile vs. LoadFrom und Choosing a Binding Context, um Informationen zu Methoden zu erhalten, die Assemblys laden.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

Sobald die Ausführung des Benutzercodes in einem verwalteten Prozess gestartet wird, ist es zu spät, CoSetProxyBlanket zuverlässig aufzurufen. Die Common Language Runtime (CLR) führt Initialisierungsaktionen aus, die möglicherweise verhindern, dass ein P/Invoke von Benutzern erfolgreich ist.

Wenn CoSetProxyBlanket jedoch für eine verwaltete Anwendung aufgerufen werden muss, wird empfohlen, den Prozess unter Verwendung von systemeigenem, ausführbarem Code (C++) zu starten, CoSetProxyBlanket im systemeigenen Code aufzurufen und anschließend die Anwendung mit verwaltetem Code im Prozess auszuführen. (Achten Sie darauf, eine Versionsnummer für die Laufzeit anzugeben.)

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, entfernen oder ersetzen Sie den Aufruf der gefährlichen oder problematischen Methode.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie Meldungen von dieser Regel nur, wenn keine Alternativen zu der problematischen Methode vorhanden sind.

Siehe auch

Weitere Ressourcen

Zuverlässigkeitswarnungen