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