Windows los controles de formularios deben inicializarse antes de intentar obtener acceso a Thread LocalDataStore

Los controles de Microsoft .NET Compact Framework Windows Forms deben inicializarse antes de intentar acceder para evitar Thread LocalDataStoreSlot posibles interbloqueos.

Versión del producto original:   Microsoft .NET Compact Framework
Número KB original:   2552355

Causa

Windows forms usan la clase que administra el almacenamiento ApplicationThreadContext local de subprocesos (TLS) en una aplicación de Compact Framework. ApplicationThreadContext no es una clase estática, aunque tiene algunos campos estáticos y un constructor estático para inicializarlos.

ApplicationThreadContext adquiere explícitamente un bloqueo en el constructor estático, ya que la inicialización adecuada de los campos estáticos es fundamental para el funcionamiento del sistema. Esto está en línea con la especificación ECMA (4ª edición, junio de 2006, partición II, sección 10.5.3.3), que no recomienda adquirir bloqueos dentro de constructores estáticos, pero no los prohíbe cuando se invocan explícitamente.

Un intento de una aplicación de obtener acceso a TLS a través de la clase antes de inicializar el primer control de interfaz de usuario puede provocar ApplicationThreadContext un interbloqueo. Esto significa que la aplicación debe esperar hasta que se haya inicializado el primer control de interfaz de usuario antes de intentar obtener acceso a TLS a través de la ApplicationThreadContext clase. Esto no significa que el control de interfaz de usuario tenga que estar visible; solo significa que debe haber sido inicializado.