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