Compartilhar via


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.