Windows Forms-Steuerelemente müssen initialisiert werden, bevor Versucht wird, auf Thread LocalDataStore zuzugreifen
Microsoft .NET Compact Framework Windows Forms-Steuerelemente müssen initialisiert werden, bevor Sie versuchen, auf Thread LocalDataStoreSlot mögliche Deadlocks zuzugreifen.
Ursprüngliche Produktversion: Microsoft .NET Compact Framework
Ursprüngliche KB-Nummer: 2552355
Ursache
Windows Forms-Steuerelemente verwenden die Klasse, die den ApplicationThreadContext lokalen Threadspeicher (TLS) in einer Compact Framework-Anwendung verwaltet. ApplicationThreadContext ist keine statische Klasse, obwohl sie über einige statische Felder und einen statischen Konstruktor zum Initialisieren verfügt.
ApplicationThreadContext ruft explizit eine Sperre im statischen Konstruktor ab, da die ordnungsgemäße Initialisierung der statischen Felder für den Betrieb des Systems wichtig ist. Dies entspricht der ECMA-Spezifikation (4. Edition, Juni 2006, Partition II, Abschnitt 10.5.3.3), die das Abrufen von Sperren innerhalb statischer Konstruktoren verhindert, jedoch nicht, wenn sie explizit aufgerufen werden.
Ein Versuch einer Anwendung, über die Klasse auf TLS zuzugreifen, ApplicationThreadContext bevor das erste Benutzeroberflächensteuerelement initialisiert wurde, kann zu einem Deadlock führen. Dies bedeutet, dass die Anwendung warten muss, bis das erste Benutzeroberflächensteuerelement initialisiert wurde, bevor versucht wird, über die Klasse auf TLS ApplicationThreadContext zuzugreifen. Dies bedeutet nicht, dass das Benutzeroberflächensteuerelement sichtbar sein muss. dies bedeutet nur, dass sie initialisiert sein muss.