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


CA2003: не следует обрабатывать нити как потоки

TypeName

DoNotTreatFibersAsThreads

CheckId

CA2003

Категория

Microsoft.Reliability

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

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

Причина

Управляемый поток обрабатывается как поток Win32.

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

Не предполагайте, что управляемый поток является потоком Win32.Это волокно.Общеязыковая среда выполнения (CLR) будет выполнять управляемые потоки как волокна в контексте реальных потоки, принадлежащие SQL.Эти потоки могут быть общими для AppDomains и баз данных в процессе SQL Server.Можно использовать локальное хранилище управляемых потоков, но нельзя использовать локальное хранилище неуправляемых потоков или предполагать, что код будет снова выполняться в текущем потоке ОС.Не следует изменять такие параметры, как языковой стандарт потока.Не следует вызывать CreateCriticalSection или CreateMutex при помощи P/Invoke, поскольку в этом случае требуется поток, который входит в блокировку и выходит из нее.При использовании нитей этого не произойдет, поэтому важные разделы и мьютексы Win32 будут бесполезны в SQL.Для управляемых объектов System.Thread можно безопасно использовать большую часть состояния.Сюда относятся локальное хранилище управляемого потока и текущий язык и региональные параметры пользовательского интерфейса (UI) потока.Однако в силу применяемой модели программирования невозможно изменить текущие языковые и региональные параметры потока при использовании SQL; для этого потребуется новое разрешение.

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

Изучите использование потоков в коде и измените код соответственным образом.

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

Не следует отключать предупреждения этого правила.