Considerações de threading para a API StylusInput
O objeto RealTimeStylus foi projetado para fornecer acesso em tempo real ao fluxo de dados da caneta tablet. Plug-ins, objetos que implementam a interface IStylusSyncPlugin ou IStylusAsyncPlugin podem ser adicionados a um objeto RealTimeStylus . Plug-ins síncronos geralmente são chamados diretamente pelo objeto RealTimeStylus em um thread de alta prioridade, enquanto plug-ins assíncronos geralmente são chamados no thread da interface do usuário do aplicativo. Crie ou use plug-ins síncronos para tarefas que exigem acesso em tempo real ao fluxo de dados e não gerenciam computacionalmente, como filtragem de pacotes. Crie ou use plug-ins assíncronos para tarefas que não exigem acesso em tempo real ao fluxo de dados, como a coleta de tinta.
Como os dados de plug-in da coleção de plug-ins assíncrona do objeto RealTimeStylus são enfileirados, plug-ins assíncronos podem receber dados antes de receber uma chamada para seu método RealTimeStylusDisabled , mas depois que o objeto RealTimeStylus é desabilitado . Observe que alguns dos métodos e propriedades do objeto RealTimeStylus geram uma exceção se o objeto RealTimeStylus estiver desabilitado .
Os métodos de interface IStylusSyncPlugin a seguir podem chamar em um thread diferente do thread de dados da caneta tablet.
- Os métodos RealTimeStylusEnabled e RealTimeStylusDisabled são chamados no thread que atualiza a propriedade Enabled do objeto RealTimeStylus ou que adiciona ou remove o plug-in enquanto o objeto RealTimeStylus está habilitado.
- O método CustomStylusDataAdded é chamado no thread que chama o método AddCustomStylusDataToQueue do objeto RealTimeStylus.
- O método Error é chamado no thread no qual o plug-in síncrono está em execução quando gera uma exceção.
Para interagir com seu aplicativo de um plug-in síncrono, use o método AddCustomStylusDataToQueue do objeto RealTimeStylus e manipule os dados de caneta personalizados em um de seus plug-ins assíncronos. Se você fizer uma chamada síncrona para outro thread de um plug-in síncrono, poderá bloquear o objeto RealTimeStylus e, portanto, bloquear a coleção de tinta.
Determinadas tarefas podem ser computacionalmente exigentes, mas ainda exigem acesso em tempo real ao fluxo de dados da caneta tablet, como para reconhecimento de gestos multistroke. As APIs StylusInput fornecem um modelo RealTimeStylus em cascata que permite usar dois objetos RealTimeStylus , cada um chamando seus plug-ins síncronos de threads diferentes. Para obter mais informações sobre o modelo RealTimeStylus em cascata, consulte The Cascaded RealTimeStylus Model.
Observação
Você não pode anexar o objeto RealTimeStylus a uma janela ou controle em um processo diferente.
Para obter mais informações sobre considerações de threading para o Tablet PC em geral, consulte Considerações sobre threading de tablet pc