CA2003: Não trata fibras threads
TypeName |
DoNotTreatFibersAsThreads |
CheckId |
CA2003 |
<strong>Categoria</strong> |
Microsoft.Reliability |
Alteração significativa |
Não-separável |
Causa
Um segmento gerenciado está sendo tratado como um thread do Win32.
Descrição da regra
Não pressuponha que um segmento gerenciado é um segmento do Win32.É uma fibra.O common language runtime (CLR) será executado threads gerenciados como fibras no contexto de segmentos reais pertencentes a SQL.Esses segmentos podem ser compartilhados entre AppDomains e até mesmo bancos de dados no processo de SQL Server.Usando gerenciado funcionará armazenamento local de segmento, mas não pode usar o armazenamento local de thread não gerenciado ou pressupõem que seu código será executado novamente no thread do sistema operacional atual.Não altere as configurações como, por exemplo, a localidade do thread.Não ligue para CreateCriticalSection ou CreateMutex via P/Invoke porque elas exigem que o thread que entra em um bloqueio também deve sair do bloqueio.Como esse não será o caso quando você usa fibras, exclusões mútuas e seções críticas do Win32 serão inúteis no SQL.Você pode usar com segurança a maioria do estado em um objeto gerenciado de System.Thread.Isso inclui armazenamento local de thread gerenciado e a cultura de interface (UI) do usuário atual do segmento.No entanto, para razões de modelo de programação, não será capaz de alterar a cultura atual de um thread quando você usa SQL; Isso será imposto por meio de uma nova permissão.
Como corrigir violações
Examine o seu uso de threads e alterar seu código de acordo.
Quando suprimir avisos
Você não deve suprimir esta regra.