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 |
---|---|
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.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. |
|
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. |
|
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.