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 в машинном коде и запустить приложение управляемого кода в процессе. (Обязательно укажите номер версии среды выполнения.) |
Устранение нарушений
Чтобы устранить нарушение этого правила, удалите или замените вызов опасного или проблемного метода.
Когда лучше отключить предупреждения
Отключайте сообщения из этого правила только в том случае, если доступны никакие альтернативные варианты проблемного метода.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по