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

Товар Значение
Идентификатор правила CA2001
Категория Microsoft.Reliability
Критическое изменение Не критическое

Причина

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

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

Избегайте ненужных и потенциально опасных вызовов методов. Нарушение этого правила возникает, когда член вызывает один из следующих методов:

Метод Description
System.GC.Collect Вызов GC. Сбор может значительно повлиять на производительность приложения и редко требуется. Дополнительные сведения см . в записи блога о Производительности Tidbits в Рико Мариани в MSDN.
System.Threading.Thread.Resume

System.Threading.Thread.Suspend
Thread.Suspend и Thread.Resume не рекомендуется использовать из-за их непредсказуемого поведения. Используйте другие классы в System.Threading пространстве имен, например MonitorMutex, и Semaphore, чтобы синхронизировать потоки или защитить ресурсы.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle Метод DangerousGetHandle представляет угрозу безопасности, так как он может вернуть дескриптор, который недействителен. Дополнительные сведения о безопасном DangerousGetHandle использовании метода см. в DangerousAddRef разделе и DangerousRelease методах.
System.Reflection.Assembly.LoadFrom

System.Reflection.Assembly.LoadFile

System.Reflection.Assembly.LoadWithPartialName
Эти методы могут загружать сборки из непредвиденных расположений. Например, сведения о методах загрузки сборок см. в записях блога .NET CLR В блоге Suzanne Cook и LoadFrom и выбор контекста привязки для получения сведений о методах, которые загружают сборки.
CoSetProxyBlanket

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

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

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

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

Когда лучше отключить предупреждения

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

См. также