CA2003: não tratar fibras como threads
TypeName |
DoNotTreatFibersAsThreads |
CheckId |
CA2003 |
Categoria |
Microsoft.Reliability |
Alteração Significativa |
Sem quebra |
Causa
Um thread gerenciado está sendo tratado como um thread Win32.
Descrição da Regra
Digamos que um thread gerenciado é um thread Win32.É uma fibra.Common Language Runtime (CLR) executará threads gerenciados como fibras no contexto de threads reais que são de propriedade do SQL.Esses threads podem ser compartilhados pelos appdomains e até mesmo de bases de dados no processo do SQL Server.Usar armazenamento de thread local gerenciado funcionará, mas você não pode usar o armazenamento de thread local não gerenciado ou presume que o código será executado no thread atual do sistema operacional novamente.Não altere as configurações como a localidade do thread.Não chame CreateCriticalSection ou CreateMutex por meio de P/Invoke porque eles exigem que o thread que entra em um bloqueio também deve deixar o bloqueio.Como esse não será o caso quando você usar fibras, as seções críticos e os mutexes do Win32 serão inúteis no SQL.Você pode seguramente usar a maioria de estado em um objeto gerenciado de System.Thread.Isso inclui o armazenamento de thread local gerenciado e a cultura atual de (UI) de interface de usuário do thread.No entanto, por razões do modelo de programação, você não poderá alterar a cultura atual de um thread quando você usa SQL; isso será aplicada a uma nova permissão.
Como Corrigir Violações
Examine o uso de threads e altere seu código adequadamente.
Quando Suprimir Alertas
Você não deve omitir esta regra.