Les contrôles Windows Forms doivent être initialisés avant toute tentative d’accès à thread LocalDataStore

Les contrôles Windows Forms de Microsoft .NET Compact Framework doivent être initialisés avant toute tentative d’accès Thread LocalDataStoreSlot pour empêcher les blocages potentiels.

Version du produit d’origine :   Microsoft .NET Compact Framework
Numéro de la base de connaissances initiale :   2552355

Cause

Les contrôles Windows Forms utilisent la ApplicationThreadContext classe qui gère le stockage local des threads dans une application Compact Framework. ApplicationThreadContextn’est pas une classe statique, bien qu’elle comporte certains champs statiques et un constructeur statique pour les initialiser.

ApplicationThreadContextacquiert explicitement un verrou dans le constructeur statique lorsque l’initialisation correcte des champs statiques est essentielle pour le fonctionnement du système. Ceci est conforme à la spécification ECMA (4ème édition, juin 2006, Partition II, section 10.5.3.3), qui décourage l’acquisition de verrous à l’intérieur des constructeurs statiques, cependant, ne les interdit pas lorsqu’ils sont explicitement appelés.

Une tentative d’accès par une application à TLS via la ApplicationThreadContext classe avant l’initialisation du premier contrôle d’interface utilisateur peut entraîner un blocage. Cela signifie que l’application doit attendre jusqu’à ce que le premier contrôle d’interface utilisateur ait été initialisé avant d’essayer d’accéder au protocole TLS via la ApplicationThreadContext classe. Cela ne signifie pas que le contrôle de l’interface utilisateur doit être visible ; Cela signifie uniquement qu’elle doit avoir été initialisée.