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


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

Обновлен: Ноябрь 2007

TypeName

DoNotTreatFibersAsThreads

CheckId

CA2003

Категория

Microsoft.Reliability

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

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

Причина

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

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

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

Предотвращение нарушений

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

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

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