CA2003: No tratar fibras como subprocesos

Elemento Valor
RuleId CA2003
Category Microsoft.Reliability
Cambio importante Poco problemático

Causa

Un subproceso administrado se trata como un subproceso de Win32.

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

Descripción de la regla

No asuma que un subproceso administrado es un subproceso de Win32; es una fibra. Common Language Runtime (CLR) ejecuta subprocesos administrados como fibras en el contexto de subprocesos reales que son propiedad de SQL. Estos subprocesos se pueden compartir entre dominios de aplicación e incluso bases de datos en el proceso de SQL Server. El uso de almacenamiento local para el subproceso administrado sirve, pero no se puede usar el almacenamiento local para el subproceso no administrados ni suponer que el código se va a ejecutar de nuevo en el subproceso del sistema operativo actual. No cambie la configuración, como la configuración regional del subproceso. No llame a CreateCriticalSection ni CreateMutex mediante P/Invoke porque requieren que el subproceso que entra en un bloqueo también salga de este. Dado que el subproceso que entra en un bloqueo no sale de este cuando se usan fibras, las secciones críticas de Win32 y las exclusiones mutuas son inútiles en SQL. Puede usar sin ningún riesgo la mayor parte del estado en un objeto Thread administrado, incluido el almacenamiento local para el subproceso administrado y la referencia cultural de la interfaz de usuario (UI) del subproceso. Pero por motivos del modelo de programación, no podrá cambiar la referencia cultural actual de un subproceso al usar SQL. Esta limitación se aplicará mediante un nuevo permiso.

Cómo corregir infracciones

Examine el uso de subprocesos y cambie el código en consecuencia.

Cuándo suprimir las advertencias

No elimine esta regla.