Threadingüberlegungen für die StylusInput-API
Das RealTimeStylus-Objekt ist so konzipiert, dass es echtzeitbasierten Zugriff auf den Datenstrom über den Tablettstift bietet. Plug-Ins, Objekte, die die IStylusSyncPlugin- oder IStylusAsyncPlugin-Schnittstelle implementieren, können einem RealTimeStylus-Objekt hinzugefügt werden. Synchrone Plug-Ins werden im Allgemeinen direkt vom RealTimeStylus-Objekt in einem Thread mit hoher Priorität aufgerufen, während asynchrone Plug-Ins im Allgemeinen für den Benutzeroberflächenthread der Anwendung aufgerufen werden. Erstellen oder verwenden Sie synchrone Plug-Ins für Aufgaben, die Echtzeitzugriff auf den Datenstrom erfordern und rechenintensiv sind, z. B. Paketfilterung. Erstellen oder verwenden Sie asynchrone Plug-Ins für Aufgaben, die keinen Echtzeitzugriff auf den Datenstrom erfordern, z. B. die Ink-Sammlung.
Da die Plug-In-Daten für die asynchrone Plug-In-Sammlung des RealTimeStylus-Objekts in die Warteschlange eingereiht werden, empfangen asynchrone Plug-Ins möglicherweise Daten, bevor sie einen Aufruf der RealTimeStylusDisabled-Methode empfangen, aber nachdem das RealTimeStylus-Objekt deaktiviert wurde. Beachten Sie, dass einige der Methoden und Eigenschaften des RealTimeStylus-Objekts eine Ausnahme auslösen, wenn das RealTimeStylus-Objekt deaktiviert ist.
Die folgenden IStylusSyncPlugin-Schnittstellenmethoden können für einen anderen Thread als den Tablettstift-Datenthread aufrufen.
- Die Methoden RealTimeStylusEnabled und RealTimeStylusDisabled werden für den Thread aufgerufen, der die Enabled-Eigenschaft des RealTimeStylus-Objekts aktualisiert oder das Plug-In hinzufügt oder entfernt, während das RealTimeStylus-Objekt aktiviert ist.
- Die CustomStylusDataAdded-Methode wird für den Thread aufgerufen, der die AddCustomStylusDataToQueue-Methode des RealTimeStylus-Objekts aufruft.
- Die Error-Methode wird für den Thread aufgerufen, in dem das synchrone Plug-In ausgeführt wird, wenn es eine Ausnahme auslöst.
Verwenden Sie zum Interagieren mit Ihrer Anwendung über ein synchrones Plug-In die AddCustomStylusDataToQueue-Methode des RealTimeStylus-Objekts, und verarbeiten Sie die benutzerdefinierten Stiftdaten in einem Ihrer asynchronen Plug-Ins. Wenn Sie einen synchronen Aufruf eines anderen Threads über ein synchrones Plug-In vornehmen, können Sie das RealTimeStylus-Objekt und somit die Ink-Sammlung blockieren.
Bestimmte Aufgaben sind möglicherweise rechenintensiv, erfordern aber dennoch Echtzeitzugriff auf den Datenstrom des Tablettstifts, z. B. für die Erkennung von Gesten mit mehreren Tastatureingaben. Die StylusInput-APIs stellen ein kaskadiertes RealTimeStylus-Modell bereit, mit dem Sie zwei RealTimeStylus-Objekte verwenden können, von denen jedes seine synchronen Plug-Ins aus verschiedenen Threads aufruft. Weitere Informationen zum kaskadierten RealTimeStylus-Modell finden Sie unter Das kaskadierte RealTimeStylus-Modell.
Hinweis
Sie können das RealTimeStylus-Objekt nicht an ein Fenster oder Steuerelement in einem anderen Prozess anfügen.
Weitere Informationen zu Threadingüberlegungen für den Tablet-PC im Allgemeinen finden Sie unter Überlegungen zum Threading von Tablet-PCs.