Поделиться через


CA2001: избегайте вызовов проблемных методов

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

Категория

Microsoft.Reliability

Критическое изменение

Не критическое

Причина

Член вызывает потенциально опасный или проблемный метод.

Описание правила

Избегайте создания ненужных и потенциально опасных вызовов методов.

Это правило нарушается при вызове членом одного из следующих методов.

Метод

Описание

GC.Collect

Вызов GC.Collect может серьезно повлиять на производительность приложения и требуется очень редко.Дополнительные сведения см. в записи блога Rico Mariani's Performance Tidbits в MSDN.

Thread.Resume

Thread.Suspend

Из-за непредсказуемого поведения методы Thread.Suspend и Thread.Resume более не используются. Для синхронизации потоков или защиты ресурсов используйте другие классы в пространстве имен System.Threading, такие как Monitor, [T:System.Threading.Mutex,]Mutex и Semaphore.

SafeHandle.DangerousGetHandle

Метод DangerousGetHandle создает угрозу безопасности, поскольку он может возвращать недопустимый дескриптор.Дополнительные сведения о безопасном использовании метода DangerousGetHandle см. в описании методов DangerousAddRef и DangerousRelease

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

Эти методы могут загружать сборки из непредвиденных расположений.Например, чтобы узнать информацию о методах загрузки сборок см. записи блога Suzanne Cook's .NET CLR Notes LoadFile vs. LoadFrom и Choosing a Binding Context на веб-сайте MSDN.

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

Когда в управляемом процессе начинается выполнение кода пользователя, уже слишком поздно для надежного вызова CoSetProxyBlanket.CLR выполняет действия по инициализации, которые могут помешать успешной работе пользователей P/Invoke.

Если для управляемого приложения нужно вызвать метод CoSetProxyBlanket, рекомендуется начать процесс с помощью исполняемого файла на машинном коде (C++), вызвать CoSetProxyBlanket в машинном коде, а затем запустить управляемое приложение. (Убедитесь, что указан номер версии среды выполнения.)

Устранение нарушений

Чтобы устранить нарушение данного правила, удалите или замените вызов опасного или проблемного метода.

Отключение предупреждений

Следует отключить вывод сообщений этого правила, только если других альтернатив этому проблемному методу нет.

См. также

Другие ресурсы

Предупреждения надежности