Plug-In-Daten und die RealTimeStylus-Klasse
Plug-Ins für die RealTimeStylus-Klasse müssen die IStylusSyncPlugin - oder IStylusAsyncPlugin-Schnittstelle oder beides implementieren. Während Sie alle Plug-In-Schnittstellenmethoden implementieren müssen, empfängt Ihr Plug-In nur Aufrufe von Methoden, die in den Plug-Ins Microsoft.StylusInput.IStylusSyncPlugin.DataInterest oder Microsoft.StylusInput.IStylusAsyncPlugin.DataInterest-Eigenschaft gekennzeichnet sind.
Die für die Schnittstellen definierten Methoden verwenden Objekte im Microsoft.StylusInput.PluginData-Namespace , um die Stiftdaten an die Plug-Ins zu übergeben. In der folgenden Tabelle werden die Datenobjekte beschrieben, die Parameter in den Benachrichtigungsmethoden sind, und der DataInterestMask-Wert aufgeführt, der der Benachrichtigung zugeordnet ist.
Plug-In-Daten | DataInterestMask-Wert | BESCHREIBUNG |
---|---|---|
Customstylusdata | CustomStylusDataAdded | Benutzerdefinierte Anwendungsdaten, die ein Plug-In hinzufügt. |
Errordata | Fehler | Fehlerinformationen, die das RealTimeStylus-Objekt als Reaktion auf eine nicht behandelte Ausnahme in einem seiner Plug-Ins hinzufügt. |
Inairpacketsdata | InAirPackets | Paketinformationen für die Eingabestiftbewegung, während sich der Stift in der Luft über dem Digitizer befindet. |
Packetsdata | Pakete | Paketinformationen für die Eingabestiftbewegung, während der Stift den Digitizer berührt. |
Realtimestylusdisableddata | RealTimeStylusDisabled | Informationen, die das RealTimeStylus-Objekt hinzufügt, wenn es deaktiviert wird. |
RealTimeStylusEnabledData | RealTimeStylusEnabled | Informationen, die das RealTimeStylus-Objekt hinzufügt, wenn es aktiviert wird. |
Stylusbuttondowndata | Stylusbuttondown | Informationen zur bestimmten Taste des Eingabestifts, die gedrückt wird. |
Stylusbuttonupdata | StylusButtonUp | Informationen zur betreffenden Eingabestiftschaltfläche, die freigegeben wird. |
Stylusdowndata | StylusDown | Paketinformationen für einen Stift, da der Stift mit dem Digitizer in Kontakt gebracht wird. |
Stylusinrangedata | StylusInRange | Informationen über den bestimmten Eingabestift, der in den Eingabebereich des RealTimeStylus-Objekts oder in den Erkennungsbereich des Digitizers über dem Eingabebereich des RealTimeStylus-Objekts eintritt. |
Stylusoutofrangedata | StylusOutOfRange | Informationen über den bestimmten Eingabestift, der den Eingabebereich des RealTimeStylus-Objekts verlässt oder den Erkennungsbereich des Digitizers über dem Eingabebereich des RealTimeStylus-Objekts verlässt. |
Stylusupdata | Eingabestift | Paketinformationen für einen Eingabestift, während der Stift vom Digitizer angehoben wird. |
Systemgesturedata | Systemgesture | Informationen, die das RealTimeStylus-Objekt hinzufügt, wenn es eine Systemgeste erkennt. |
TabletAddedData | Tabletadded | Informationen zum hinzugefügten Tablet-Objekt . |
Tabletremoveddata | Tabletremoved | Informationen zum entfernten Tablet-Objekt . |
Informationen dazu, wie das RealTimeStylus-Objekt den Tablet-Stiftdatenstrom verarbeitet, finden Sie unter Arbeiten mit der RealTimeStylus-Klasse.
Dateninteresse
Das RealTimeStylus-Objekt überprüft die Microsoft.StylusInput.IStylusSyncPlugin.DataInterest - oder Microsoft.StylusInput.IStylusAsyncPlugin.DataInterest-Eigenschaft eines Plug-Ins, wenn das Plug-In der synchronen oder asynchronen Plug-In-Auflistung des RealTimeStylus-Objekts hinzugefügt wird. Daher sollten Sie die DataInterest-Eigenschaft verwenden, um alle Benachrichtigungen zu abonnieren, die von diesem instance Ihres Plug-Ins verwendet werden, jedoch selten, aber nicht für eine der Benachrichtigungen, die dieses instance Ihres Plug-Ins nie verwendet. Überprüfen Sie bei Benachrichtigungen, die Ihr Plug-In nur gelegentlich verwendet, den Status Ihres Plug-Ins in der Benachrichtigungsmethode und geben Sie zurück, wenn die Benachrichtigung nicht von Ihrem Plug-In im aktuellen Zustand verwendet wird.
Ein Plug-In empfängt nur Aufrufe von Methoden, die in der Microsoft.StylusInput.IStylusSyncPlugin.DataInterest - oder Microsoft.StylusInput.IStylusAsyncPlugin.DataInterest-Eigenschaft des Plug-Ins gekennzeichnet sind. Weitere Informationen zu den möglichen Werten der DataInterest-Eigenschaft eines Plug-Ins finden Sie in der DataInterestMask-Enumeration .
Zeitliche Steuerung
Daten werden im RealTimeStylus-Objekt in die Warteschlange gestellt, bevor sie an die Plug-Ins in der asynchronen Plug-In-Auflistung übergeben werden. In der folgenden Liste werden einige Situationen beschrieben, die Sie beim Entwerfen eines asynchronen Plug-Ins berücksichtigen müssen.
- Wenn das RealTimeStylus-Objekt deaktiviert ist, empfängt das asynchrone Plug-In möglicherweise andere Benachrichtigungen in der Warteschlange, bevor seine RealTimeStylusDisabled-Methode aufgerufen wird. In dieser Situation lösen Aufrufe des Plug-Ins für einige Methoden und Eigenschaften des RealTimeStylus-Objekts eine Ausnahme aus. Informationen, die für Ihr Plug-In relevant sind, sollten zwischengespeichert werden, wenn das RealTimeStylus-Objekt aktiviert ist.
- Die ClearStylusQueues-Methode des RealTimeStylus-Objekts kann Informationen aus der Ausgabewarteschlange entfernen. Daher können asynchrone Plug-Ins nicht darauf angewiesen sein, alle relevanten Benachrichtigungen zu empfangen.
- Wenn ein Tablet-Objekt , das für das RealTimeStylus-Objekt verfügbar ist, entfernt wird, erhält das asynchrone Plug-In möglicherweise eine Warteschlange-Stiftbenachrichtigung für das Tablet, bevor seine TabletRemoved-Methode aufgerufen wird. In dieser Situation funktioniert das Aufrufen der GetTabletPropertyDescriptionCollection-Methode des RealTimeStylus-Objekts nicht. Informationen, die für Ihr Plug-In relevant sind, sollten zwischengespeichert werden, wenn das RealTimeStylus-Objekt aktiviert ist oder wenn ein neues Tablet hinzugefügt wird.
Je nach Anwendung können Sie die Leistung verbessern, wenn Sie ein RealTimeStylus-Objekt deaktivieren. Wenn die Enabled-Eigenschaft des RealTimeStylus-Objekts auf FALSE festgelegt ist, werden Daten in den Eingabe- und Ausgabewarteschlangen verarbeitet, bis die Warteschlangen leer sind. Sie können die ClearStylusQueues-Methode des RealTimeStylus-Objekts aufrufen, um die Warteschlangen zu löschen, bevor Sie das RealTimeStylus-Objekt deaktivieren.
Aktivierte und deaktivierte Daten
Wenn das RealTimeStylus-Objekt aktiviert ist, empfängt jedes Plug-In einen Aufruf seiner Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled - oder Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusEnabled-Methode . Das realTimeStylusEnabledData-Objekt , das in der Benachrichtigung übergeben wird, enthält eine Auflistung der Kontextbezeichner für die verfügbaren Tablets zum Zeitpunkt der Aktivierung des RealTimeStylus-Objekts .
Hinweis
Da die Plug-In-Daten für die asynchrone Plug-In-Auflistung des RealTimeStylus-Objekts in die Warteschlange gestellt werden, können asynchrone Plug-Ins Daten empfangen, bevor sie einen Aufruf der RealTimeStylusDisabled-Methode empfangen, aber nachdem das RealTimeStylus-Objekt deaktiviert wurde. Beachten Sie, dass einige Methoden und Eigenschaften des RealTimeStylus-Objekts eine Ausnahme auslösen, wenn das RealTimeStylus-Objekt deaktiviert ist.
Das RealTimeStylus-Objekt ruft die Methoden Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled und Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusDisabled für den Thread auf, von dem das RealTimeStylus-Objekt aktiviert ist oder aus dem das synchrone Plug-In hinzugefügt wird.
Im Allgemeinen können Sie Plug-Ins hinzufügen oder entfernen, während das RealTimeStylus-Objekt deaktiviert ist. Weitere Informationen zum Hinzufügen und Entfernen von Plug-Ins zum RealTimeStylus-Objekt finden Sie unter Plug-Ins und die RealTimeStylus-Klasse.
Tablet-Daten
Wenn ein Tablet, das das RealTimeStylus-Objekt verwenden kann, dem Tablet-PC hinzugefügt oder entfernt wird, während das RealTimeStylus-Objekt aktiviert ist, benachrichtigt das RealTimeStylus-Objekt seine Plug-Ins, dass ein Tablet-Objekt hinzugefügt oder entfernt wurde. Jedes RealTimeStylus-Objekt verwaltet eine Liste eindeutiger Bezeichner für die Tablet-Objekte, mit denen es interagieren kann. Das RealTimeStylus-Objekt verfügt über zwei Methoden zum Übersetzen zwischen dem eindeutigen Bezeichner und dem Tablet-Objekt, den Methoden GetTabletContextIdFromTablet und GetTabletFromTabletContextId .
Hinweis
Informationen zu einem Tablet sind vom RealTimeStylus-Objekt nicht mehr verfügbar, nachdem das Tablet vom Tablet-PC entfernt wurde.
Tablet-Stiftdaten
Das RealTimeStylus-Objekt übergibt Informationen über den Tablet-Stift an seine Plug-Ins in einer Reihe der Benachrichtigungsmethoden. Informationen zum Tablet-Stift werden durch ein Stylus-Objekt dargestellt. Dieses Objekt ist ein Momentaufnahme des Zustands des Tablet-Stifts zum Zeitpunkt der Erfassung der Daten. Da Plug-Ins die Tablet-Stiftdaten als Teil des Tablet-Stiftdatenstroms empfangen, sollten die Plug-Ins die Informationen im Stylus-Objekt verwenden, anstatt über die Cursor-Klasse auf den aktuellen Zustand eines bestimmten Tablet-Stifts zu überprüfen.
Jedes Stylus-Objekt enthält den Tablet-Kontextbezeichner für das Tablet, das die Daten generiert hat.
Systemgestendaten
Das RealTimeStylus-Objekt empfängt Daten zu Systemgesten, wie sie vom Tablet-PC erkannt werden. In der folgenden Tabelle wird die Reihenfolge beschrieben, in der die SystemGestureData-Objekte im Tablet-Stiftdatenstrom im Verhältnis zu anderen Tablet-Stiftdaten vorkommen.
Systemgesture | Objekte, die dem SystemGestureData-Objekt vorangestellt sind | Objekte, die nach dem SystemGestureData-Objekt kommen |
---|---|---|
Tippen | Das StylusDownData-Objekt . |
Das StylusUpData-Objekt . |
DoubleTap | Das StylusDownData-Objekt , das SystemGestureData-Objekt für die Tap-Systemgeste und die StylusUpData-Objekte . |
Das zweite StylusDownData-Objekt . |
RightTap | Das StylusDownData-Objekt und das SystemGestureData-Objekt für den HoldEnter-Member der SystemGesure-Enumeration . |
Das StylusUpData-Objekt . |
Ziehen | Das StylusDownData-Objekt . |
Das StylusUpData-Objekt . |
RightDrag | Das StylusDownData-Objekt . |
Das StylusUpData-Objekt . |
HoldEnter | Das StylusDownData-Objekt . |
Das StylusUpData-Objekt . Hinweis: Diese Systemgeste wird nicht erkannt, wenn der Benutzer mit einer Drag - oder RightDrag-Systemgeste beginnt. |
HoldLeave | Nicht implementiert. |
Nicht implementiert. |
HoverEnter | Mehrere InAirPacketsData-Objekte mit niedriger durchschnittlicher Geschwindigkeit. |
Hinweis: Es kann zu einer spürbaren Verzögerung kommen, bevor die HoverEnter-Systemgeste empfangen wird. Das RealTimeStylus-Objekt empfängt diese Daten nur, wenn das RealTimeStylus-Objekt an das Fenster oder Steuerelement angefügt ist, das sich zum Zeitpunkt der Systemgeste direkt unter dem Stift befindet. |
HoverLeave | Das SystemGestureData-Objekt für die HoverEnter-Systemgeste und mehrere InAirPacketsData-Objekte mit ausreichender durchschnittlicher Geschwindigkeit. |
Hinweis: Es kann zu einer spürbaren Verzögerung kommen, bevor die HoverLeave-Systemgeste empfangen wird. Das RealTimeStylus-Objekt empfängt diese Daten nur, wenn das RealTimeStylus-Objekt an das Fenster oder Steuerelement angefügt ist, das sich zum Zeitpunkt der Systemgeste direkt unter dem Stift befindet. |
Benutzerdefinierte Eingabestiftdaten
Benutzerdefinierte Eingabestiftdaten können dem RealTimeStylus-Objekt hinzugefügt werden, indem die AddCustomStylusDataToQueue-Methode aufgerufen wird. Benutzerdefinierte Eingabestiftdaten können den Warteschlangen des RealTimeStylus-Objekts an einer von drei Stellen hinzugefügt werden.
- Wenn der Warteschlangenparameter auf Output festgelegt ist, werden die benutzerdefinierten Daten der Ausgabewarteschlange des RealTimeStylus-Objekts nach den Daten hinzugefügt, die derzeit von der synchronen Plug-In-Auflistung verarbeitet werden.
- Wenn der Warteschlangenparameter auf OutputImmediate festgelegt ist, werden die benutzerdefinierten Daten der Ausgabewarteschlange des RealTimeStylus-Objekts hinzugefügt, bevor die Daten, die derzeit von der synchronen Plug-In-Auflistung verarbeitet werden, verarbeitet werden.
- Wenn der Warteschlangenparameter auf Input festgelegt ist, werden die benutzerdefinierten Daten der Eingabewarteschlange des RealTimeStylus-Objekts hinzugefügt und vor neuen Daten aus dem Datenstrom des Tablet-Stifts an die synchrone Plug-In-Sammlung gesendet.
In jedem der vorherigen Fälle werden Daten, die von nachfolgenden Plug-Ins in der synchronen Plug-In-Sammlung hinzugefügt wurden, hinzugefügt, nachdem Daten durch vorangehende Plug-Ins hinzugefügt wurden.
Hinweis
Wenn der Aufruf der AddCustomStylusDataToQueue-Methode von einem synchronen Plug-In als Reaktion auf einen Aufruf einer ihrer IStylusSyncPlugin-Methoden erfolgt, werden die benutzerdefinierten Stiftdaten auf vorhersagbare Weise dem Datenstrom des Tablet-Stifts hinzugefügt. Andernfalls wird es der Warteschlange in Bezug auf die aktuellen Stiftdaten hinzugefügt, die vom RealTimeStylus-Objekt verarbeitet werden, und nicht in Bezug auf die Daten, die das asynchrone Plug-In verarbeitet. Die AddCustomStylusDataToQueue-Methode löst eine Ausnahme aus, wenn das RealTimeStylus-Objekt deaktiviert ist.
Benutzerdefinierte Eingabestiftdaten werden der Warteschlange als CustomStylusData-Objekt hinzugefügt, und Plug-Ins empfangen diese Daten über ihre Microsoft.StylusInput.IStylusSyncPlugin.CustomStylusDataAdded - oder Microsoft.StylusInput.IStylusAsyncPlugin.CustomStylusDataAdded-Methode .
Die Objekte DynamicRenderer und GestureRecognizer können der Warteschlange benutzerdefinierte Eingabestiftdaten hinzufügen. Weitere Informationen zu den DynamicRenderer - und Gesterecognizer-Objekten finden Sie unter Dynamic-Renderer-Plug-Ins und Recognizer-Plug-Ins.
Das RealTimeStylus-Objekt ruft die Microsoft.StylusInput.IStylusSyncPlugin.CustomStylusDataAdded-Methode für den Thread auf, von dem der Aufruf der AddCustomStylusDataToQueue-Methode empfangen wird.
Das folgende Diagramm veranschaulicht das Hinzufügen von benutzerdefinierten Eingabestiftdaten zur Ausgabewarteschlange, wobei der Warteschlangenparameter auf Output festgelegt ist.
In diesem Diagramm stellen die Kreise mit den Buchstaben "A" und "B" Tablet-Stiftdaten dar, die bereits der Ausgabewarteschlange des RealTimeStylus-Objekts hinzugefügt wurden und noch nicht an die asynchrone Plug-In-Auflistung gesendet wurden. Der kreisförmige Schriftzug "C" stellt die Daten des Tablet-Stifts dar, die das RealTimeStylus-Objekt derzeit verarbeitet. Sie wird an die synchrone Plug-In-Sammlung gesendet und in der Ausgabewarteschlange platziert. Die mit "1", "2" und "3" nummerierten Kreise stellen benutzerdefinierte Eingabestiftdaten dar, die der Ausgabewarteschlange vom ersten, zweiten bzw. dritten synchronen Plug-In als Reaktion auf die durch "C" dargestellten Tablet-Stiftdaten hinzugefügt wurden. Die Plug-Ins haben die benutzerdefinierten Eingabestiftdaten hinzugefügt, wobei der Warteschlangenparameter auf StylusQueues festgelegt ist. Der leere Kreis stellt die Position in der Ausgabewarteschlange dar, an der zukünftige Tablet-Stiftdaten hinzugefügt werden.
Das folgende Diagramm veranschaulicht das Hinzufügen von benutzerdefinierten Eingabestiftdaten zur Ausgabewarteschlange, wobei der Warteschlangenparameter auf OutputImmediate festgelegt ist.
In diesem Diagramm stellen die Kreise mit den Buchstaben "A" und "B" Tablet-Stiftdaten dar, die bereits der Ausgabewarteschlange des RealTimeStylus-Objekts hinzugefügt wurden und noch nicht an die asynchrone Plug-In-Auflistung gesendet wurden. Der kreisförmige Schriftzug "C" stellt die Daten des Tablet-Stifts dar, die das RealTimeStylus-Objekt derzeit verarbeitet. Sie wird an die synchrone Plug-In-Sammlung gesendet und in der Ausgabewarteschlange platziert. Die mit "1", "2" und "3" nummerierten Kreise stellen benutzerdefinierte Eingabestiftdaten dar, die der Ausgabewarteschlange vom ersten, zweiten bzw. dritten synchronen Plug-In als Reaktion auf die durch "C" dargestellten Tablet-Stiftdaten hinzugefügt wurden. Die Plug-Ins haben die benutzerdefinierten Eingabestiftdaten hinzugefügt, wobei der Warteschlangenparameter auf OutputImmediate festgelegt ist. Der leere Kreis stellt die Position in der Ausgabewarteschlange dar, an der zukünftige Tablet-Stiftdaten hinzugefügt werden.
Das folgende Diagramm veranschaulicht das Hinzufügen von benutzerdefinierten Eingabestiftdaten zur Eingabewarteschlange.
In diesem Diagramm stellen die Kreise mit den Buchstaben "A" und "B" Tablet-Stiftdaten dar, die bereits der Ausgabewarteschlange des RealTimeStylus-Objekts hinzugefügt wurden und noch nicht an die asynchrone Plug-In-Auflistung gesendet wurden. Der kreisförmige Schriftzug "C" stellt die Daten des Tablet-Stifts dar, die das RealTimeStylus-Objekt derzeit verarbeitet. Sie wird an die synchrone Plug-In-Sammlung gesendet und in der Ausgabewarteschlange platziert. Die mit "1", "2" und "3" nummerierten Kreise stellen benutzerdefinierte Eingabestiftdaten dar, die der Eingabewarteschlange vom ersten, zweiten bzw. dritten synchronen Plug-In als Reaktion auf die durch "C" dargestellten Tablet-Stiftdaten hinzugefügt wurden. Die Plug-Ins haben die benutzerdefinierten Eingabestiftdaten hinzugefügt, wobei der Warteschlangenparameter auf Input festgelegt ist. Die benutzerdefinierten Eingabestiftdaten mit der Nummer "1" werden dann an die synchronen Plug-Ins und dann an die Ausgabewarteschlange übergeben, bevor die benutzerdefinierten Eingabestiftdaten mit der Nummer "2" und "3" angegeben werden, die beide verarbeitet werden, bevor die daten des nächsten Tablet-Stifts verarbeitet werden. Der leere Kreis stellt die Position in der Ausgabewarteschlange dar, an der zukünftige Tablet-Stiftdaten hinzugefügt werden.
Fehlerdaten
Wenn ein Plug-In eine Ausnahme auslöst, wird der normale Datenfluss unterbrochen. Das RealTimeStylus-Objekt generiert ein ErrorData-Objekt und ruft Folgendes auf:
- Die Microsoft.StylusInput.IStylusSyncPlugin.Error - oder Microsoft.StylusInput.IStylusAsyncPlugin.Error-Methode des Plug-Ins, das die Ausnahme ausgelöst hat.
- Die Microsoft.StylusInput.IStylusSyncPlugin.Error - oder Microsoft.StylusInput.IStylusAsyncPlugin.Error-Methode der verbleibenden Plug-Ins in dieser Auflistung.
Wenn das Plug-In, das die Ausnahme ausgelöst hat, ein synchrones Plug-In ist, wird das ErrorData-Objekt der Ausgabewarteschlange hinzugefügt. Anschließend setzt das RealTimeStylus-Objekt die normale Verarbeitung der ursprünglichen Daten fort.
Das folgende Diagramm veranschaulicht das Hinzufügen von Fehlerdaten zu den Tablet-Stiftdaten.
In diesem Diagramm stellen die Kreise mit den Buchstaben "A" und "B" Tablet-Stiftdaten dar, die bereits der Ausgabewarteschlange des RealTimeStylus-Objekts hinzugefügt wurden und noch nicht an die asynchrone Plug-In-Auflistung gesendet wurden. Der kreisförmige Schriftzug "C" stellt die Daten des Tablet-Stifts dar, die das RealTimeStylus-Objekt derzeit verarbeitet. Der kreisförmige Buchstabe "e" stellt ein ErrorData-Objekt dar, das vom RealTimeStylus-Objekt generiert wird, wenn das zweite synchrone Plug-In, Synchrones Plug-In 2, eine Ausnahme auslöst, während "C" verarbeitet wird. Das RealTimeStylus-Objekt hält dann seine Verarbeitung von "C" an und übergibt "e" an das Plug-In, das die Ausnahme und alle nachfolgenden Plug-Ins generiert hat. Das RealTimeStylus-Objekt fügt dann "e" in die Ausgabewarteschlange ein und setzt die Verarbeitung von "C" fort, die an die verbleibenden Plug-Ins in der synchronen Plug-In-Auflistung übergeben und nach "e" in der Ausgabewarteschlange platziert wird. Der leere Kreis stellt die Position in der Ausgabewarteschlange dar, an der zukünftige Tablet-Stiftdaten hinzugefügt werden.
Wenn ein Plug-In eine Ausnahme von seiner Error-Methode auslöst, fängt das RealTimeStylus-Objekt die Ausnahme ab, generiert jedoch kein neues ErrorData-Objekt . Dies soll eine Rekursion verhindern.
Die Fehlerdaten werden der Ausgabewarteschlange nach allen benutzerdefinierten Eingabestiftdaten hinzugefügt, die an der OutputImmediate-Position vor der Ausnahme, die die Fehlerdaten erstellt hat, und vor allen benutzerdefinierten Eingabestiftdaten, die an der OutputImmediate-Position durch nachfolgende Plug-Ins in der synchronen Plug-In-Sammlung hinzugefügt werden.
Das folgende Diagramm veranschaulicht, wie die Fehlerdaten der Ausgabewarteschlange in Bezug auf benutzerdefinierte Daten hinzugefügt werden, die der OutputImmediate-Warteschlange hinzugefügt werden.
In diesem Diagramm stellen die Kreise mit den Buchstaben "A" und "B" Tablet-Stiftdaten dar, die bereits der Ausgabewarteschlange des RealTimeStylus-Objekts hinzugefügt wurden und noch nicht an die asynchrone Plug-In-Auflistung gesendet wurden. Der kreisförmige Schriftzug "C" stellt die Daten des Tablet-Stifts dar, die das RealTimeStylus-Objekt derzeit verarbeitet. Die mit "1", "2" und "3" nummerierten Kreise werden von den ersten, zweiten und dritten synchronen Plug-Ins bzw. der OutputImmediate-Warteschlange als Reaktion auf die Daten hinzugefügt, die durch den Kreis mit dem Buchstaben "C" dargestellt werden. Der Kreis mit dem Buchstaben "e" stellt Fehlerdaten dar, die als Reaktion auf eine Ausnahme generiert werden, die vom zweiten Plug-In ausgelöst wird, nachdem das zweite Plug-In benutzerdefinierte Daten zur Ausgabewarteschlange an der Position OutputImmediate hinzugefügt hat.
Wenn ein synchrones Plug-In der Eingabewarteschlange als Reaktion auf die Fehlerdaten benutzerdefinierte Eingabestiftdaten hinzufügt, werden die Daten unmittelbar vor den Fehlerdaten hinzugefügt. Wenn eines der synchronen Plug-Ins benutzerdefinierte Eingabestiftdaten zur Ausgabewarteschlange an der Ausgabeposition als Reaktion auf die Fehlerdaten hinzufügt, werden die Daten unmittelbar nach den Fehlerdaten hinzugefügt.
Das RealTimeStylus-Objekt ruft die Microsoft.StylusInput.IStylusSyncPlugin.Error-Methode für den Thread auf, von dem die Ausnahme ausgelöst wird.
Zugehörige Themen