Использование IntPtr в управляемом коде может свидетельствовать о потенциальных проблемах безопасности и надежности. Необходимо проверить все использования IntPtr, чтобы определить, требуется ли вместо этого использование SafeHandle (или чего-то подобного). Могут возникнуть проблемы, если IntPtr представляет некоторые машинные ресурсы (память, дескрипторы файлов, сокеты и др.), которыми владеет управляемый код. Например, предполагается, что управляемый код должен освободить ресурс, а если это не происходит, может возникнуть утечка ресурсов. При таком сценарии проблемы безопасности и надежности могут возникнуть при разрешении многопотокового доступа к IntPtr и средству освобождения ресурсов, представляемых IntPtr. Эти проблемы касаются повторного использования значения IntPtr на освобождение ресурсов при одновременном использовании ресурса другим потоком, что вызывает состояние гонки, когда поток считывает или записывает данные из неправильного ресурса. Например, если ваш тип хранит дескриптор ОС как IntPtr и разрешает пользователям одновременно вызывать метод Close и другие методы, использующие дескриптор (без какой-либо синхронизации), будут иметь место проблемы повторного использования дескриптора, что может привести к повреждению данных и часто к уязвимости безопасности. SafeHandle (и его наследник - класс CriticalHandle) обеспечивают механизм инкапсуляции машинного дескриптора в ресурс, что позволяет избежать ошибок в потоках (а также других проблем, например, необходимости тщательно контролировать время жизни управляемых объектов, которые содержат копию машинного дескриптора, при вызове машинных методов; т.е. часто можно удалить вызовы GC.KeepAlive). При использовании SafeHandle (и, в меньшей степени, при использовании CriticalHandle) возникает неявная нагрузка на производительность, которую часто можно смягчить с помощью аккуратного проектирования.
Использование "%ls" для выполнения нечувствительного к регистру сравнения с константной строкой "%ls". При использовании ...
Использование "->" в выражениях последовательности и вычисления ограничивается формой "for pat in expr -> expr". Использование ...
Использование .NET Framework версии 2.0, 3.0 или 3.5 с данным выпуском CTP-версии Visual Studio может привести к неправильной ...
Использование Deny или PermitOnly следует тщательно рассмотреть. К использованию Deny или PermitOnly следует отнестись с ...
Использование IntPtr в управляемом коде может свидетельствовать о потенциальных проблемах безопасности и надежности. Необходимо ...
Использование внутренних универсальных функций в выражениях в кавычках не допускается. Рекомендуется добавить ограничения ...
Использование выходных параметров может указывать на низкое качество проектирования. Хотя существуют ситуации, когда применение ...
Использование данной конструкции может повлечь за собой создание непроверяемого кода .NET IL. Данное предупреждение можно ...
Использование значения с типом "%1!ls!" в качестве параметра по умолчанию недопустимо, поскольку отсутствуют стандартные ...