Freigeben über


Überlegungen zum COM- und Automatisierungsthreading

Die folgenden Überlegungen zum Tablet-PC-Threading sind spezifisch für die Verwendung von COM (Component Object Model) und Automation.

Threadsicherheit

Mit Ausnahme der Steuerelemente InkPicture und InkEdit sind Tablet PC-Objekte threadsicher und als beide gekennzeichnet. Wenn sie als beide gekennzeichnet sind, können sie entweder in einem Single Threaded Apartment (STA) oder in einem Multithread-Apartment (MTA) ausgeführt werden.

Windows Forms verwenden das STA-Modell, da Windows Forms auf nativen Win32-Fenstern basiert, die inhärent apartmentthreaded sind.

STA- und MTA-Anwendungen

Wenn Ihre Anwendung in einem MTA ausgeführt wird oder den free threaded marshaler (FTM) verwendet, müssen Sie threadsicheren Code schreiben. Auf diese Weise können Sie jedoch bestimmte Leistungsprobleme bei der Ereignisbehandlung verbessern.

InkCollector und InkOverlay

Ihre Anwendung sollte den endgültigen Verweis auf den InkCollector oder das InkOverlay-Objekt nicht freigeben, wodurch das Objekt direkt aus dem Freihandthread zerstört wird. Stattdessen sollte die Anwendung den InkCollector oder das InkOverlay-Objekt aus einem Anwendungsthread freigeben.

Vorsicht: Eine Anwendung, die als MTA gekennzeichnet ist oder das FTM verwendet, das direkte Aufrufe vom Freihandthread in das Apartment der Anwendung zulässt, kann ihren endgültigen Verweis auf das InkCollector - oder InkOverlay-Objekt direkt aus dem Freihandthread freigeben. Dies führt jedoch zu einem nicht wiederherstellbaren Anwendungsfehler.

Ereignissenken

Wenn Ihre Anwendung das FTM nicht verwendet und ein Objekt und dessen Ereignissenke in verschiedenen Apartments erstellt werden, wird das Ereignis auf dem Thread ausgeführt, der die Ereignissenke bedient.

Ausnahmen innerhalb von Ereignishandlern

Ausnahmen, die von innerhalb von Tablet PC-Ereignishandlern ausgelöst werden, werden genutzt und sind für den Rest oder Ihre Anwendung nicht sichtbar. Ebenso werden HRESULT-Werte nicht von Tablet PC-Ereignishandlern weitergegeben. Wenn eine Anwendung, die die COM-Ebene verwendet, eine Ausnahme auslöst, wird der Hintergrundthread beendet, und die Ausnahme geht verloren. Es werden keine zusätzlichen Ereignishandler aufgerufen.

Beispiel für C++-Ereignissenken

Allgemeine Überlegungen zum Threading

Überlegungen zum Threading verwalteter Bibliotheken