Condividi tramite


Non considerare i fiber come i thread

Aggiornamento: novembre 2007

TypeName

DoNotTreatFibersAsThreads

CheckId

CA2003

Categoria

Microsoft.Reliability

Breaking Change

Non sostanziale

Causa

Un thread gestito viene considerato come thread Win32.

Descrizione della regola

Un thread gestito non è un thread Win32: è un fiber. CLR eseguirà thread gestiti come fiber all'estremità superiore dei thread reali gestiti da SQL. Tali thread verranno condivisi in AppDomains e persino nei database nell'elaborazione di SQL Server. L'utilizzo della memorizzazione locale dei thread gestiti funzionerà, ma potrebbe non essere possibile utilizzare tale sistema né supporre che il codice verrà eseguito nuovamente sul thread del sistema operativo corrente. Non modificare impostazioni quali le impostazioni internazionali del thread. Non chiamare CreateCriticalSection o CreateMutex tramite P/Invoke perché richiedono che il thread che accede a un blocco esca anche da tale blocco. Poiché questo caso non si verificherà quando si utilizzano i fiber, i mutex e le sezioni critiche di Win32 risulteranno inutili in SQL. Potrebbe essere possibile utilizzare in maniera protetta la maggior parte dello stato su un oggetto gestito System.Thread, incluse la memorizzazione locale del thread gestito e le impostazioni cultura correnti dell'interfaccia utente del thread. Tuttavia, per motivi legati al modello di programmazione, non sarà possibile modificare le impostazioni cultura correnti di un thread se si esegue SQL; ciò verrà imposto tramite una nuova autorizzazione.

Correzione di violazioni

Esaminare l'utilizzo di thread e modificare il codice di conseguenza.

Esclusione di avvisi

Non escludere tale regola.