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 thread do Win32. É uma fibra. O common language runtime (CLR) será executado threads gerenciados como fibras no contexto dos threads 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 você pode usar o armazenamento local de thread não gerenciado ou não 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 chame 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á inútil em SQL. Com segurança, você pode usar a maioria do estado em um objeto gerenciado de System.Thread. Isso inclui o 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.