Udostępnij za pośrednictwem


CA2001: Unikaj wywoływania problematycznych metod

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Kategoria

Microsoft.Reliability

Zmiana kluczowa

Niekluczowa

Przyczyna

Element członkowski wywołuje potencjalnie niebezpieczną lub problematyczną metodę.

Opis reguły

Należy unikać niepotrzebnych i potencjalnie groźnych wywołań metody.

Naruszenie tej reguły występuje, gdy członek wywołuje jedną z następujących metod.

Metoda

Opis

GC.Collect

Wywoływanie GC.Collect może znacząco wpłynąć na wydajność aplikacji i rzadko jest potrzebne.Aby uzyskać więcej informacji, zobacz Rico Mariani wydajności informacje o technologii wpis w blogu w witrynie MSDN.

Thread.Resume

Thread.Suspend

Metody Thread.suspend i Thread.Resume stały się przestarzałe z powodu ich nieprzewidywalnego zachowania. Użyj innych klas w przestrzeni nazw System.Threading, takich jak Monitor, [T:System.Threading.Mutex,] , Mutex, i Semaphore do synchronizowania wątków lub ochrony zasobów.

SafeHandle.DangerousGetHandle

Metoda DangerousGetHandle stwarza zagrożenie bezpieczeństwa, ponieważ może zwracać uchwyt, który jest nieprawidłowy.Zobacz DangerousAddRef i DangerousRelease metod, aby uzyskać więcej informacji na temat sposobu użycia metody DangerousGetHandle bezpiecznie.

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Te metody mogą ładować zestawy z nieoczekiwanych lokalizacji.Na przykład, zobacz Suzanne Cooka .NET CLR notatki w blogach LoadFile a LoadFrom i Wybieranie kontekstu wiązania informacje o metodach, które ładowanie zestawów w witrynie MSDN w sieci Web.

CoSetProxyBlanket (Ole32)

Metody CoInitializeSecurity (Ole32)

W momencie, w którym kod użytkownika zaczyna wykonywać się w zarządzanym procesie jest za późno aby niezawodnie wywołać CoSetProxyBlanket.Common language runtime (CLR) podejmuje akcje inicjalizacji, które mogą uniemożliwić P/Invoke użytkownikom powiedzenie się

Jeśli naprawdę musisz wywołać CoSetProxyBlanket dla zarządzanych aplikacji, zaleca się rozpocząć proces przy użyciu pliku wykonywalnego kodu macierzystego (C++), wywołanie CoSetProxyBlanket w kodzie macierzystym, a następnie uruchomienie aplikacji kodu zarządzanego w procesie. (Należy określić numer wersji środowiska uruchomieniowego.)

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, usuń lub zastąp wywołanie metody niebezpiecznej lub problematycznej.

Kiedy pominąć ostrzeżenia

Wiadomości od tej reguły powinno pomijać się tylko wtedy, gdy nie ma innych sposobów na rozwiązanie problematycznej metody.

Zobacz też

Inne zasoby

Ostrzeżenia niezawodności