Überlegungen zum COM- und Automation-Threading
Die folgenden Überlegungen zum Tablet PC-Threading gelten speziell für die Verwendung Component Object Model (COM) und Automation.
- Threadsicherheit
- STA- und MTA-Anwendungen
- InkCollector und InkOverlay
- Ereignissenken
- Ausnahmen in Ereignishandlern
- Zugehörige Themen
Threadsicherheit
Mit Ausnahme der Steuerelemente InkPicture und InkEdit sind Tablet PC-Objekte threadsicher und als beide gekennzeichnet. Wenn sie als beides gekennzeichnet sind, können sie entweder in einem Singlethread-Apartment (STA) oder in einem Multithread-Apartment (MTA) ausgeführt werden.
Windows Formularen verwenden das STA-Modell, da Windows-Formulare auf nativen Win32-Fenstern basieren, die inhärent apartmentthreaded sind.
STA- und MTA-Anwendungen
Wenn Ihre Anwendung in einem MTA ausgeführt wird oder den FreeThread-Marshaller (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 ihren endgültigen Verweis auf den InkCollector oder das InkOverlay-Objekt nicht veröffentlichen, wodurch das Objekt direkt aus dem Freitextthread zerstört wird. Stattdessen sollte die Anwendung den InkCollector oder das InkOverlay-Objekt aus einem Anwendungsthread veröffentlichen.
Vorsicht: Eine Anwendung, die als MTA markiert ist oder die FTM verwendet, die direkte Aufrufe vom Freitextthread in das Apartment der Anwendung zulässt, kann ihren endgültigen Verweis auf das InkCollector- oder InkOverlay-Objekt direkt aus dem Freitextthread veröffentlichen. Dies führt jedoch zu einem nicht behebbaren Anwendungsfehler.
Ereignissenken
Wenn Ihre Anwendung nicht das FTM verwendet und ein Objekt und seine Ereignissenke in verschiedenen Apartments erstellt werden, wird das Ereignis für den Thread ausgeführt, der die Ereignissenke bedient.
Ausnahmen in Ereignishandlern
Ausnahmen, die innerhalb von Tablet PC-Ereignishandlern ausgelöst werden, werden verwendet und sind für den Rest oder Ihre Anwendung nicht sichtbar. Ebenso werden HRESULT-Werte nicht von Tablet PC-Ereignishandlern propagiert. 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.