O modelo Cascaded RealTimeStylus
O modelo RealTimeStylus em cascata permite que você use dois objetos RealTimeStylus , cada um em execução em um thread diferente. Com esse modelo, você anexa um objeto RealTimeStylus secundário a um objeto RealTimeStylus primário. O objeto RealTimeStylus secundário é anexado como o único plug-in assíncrono na coleção de plug-ins assíncrona do objeto RealTimeStylus primário.
O modelo RealTimeStylus em cascata pode ser útil nos cenários a seguir.
- Você pode adicionar determinadas tarefas que podem ser computacionalmente exigentes, mas ainda exigem acesso em tempo real ao fluxo de dados da caneta tablet, como o reconhecimento de gestos multissessão, à coleção de plug-ins síncrona do objeto RealTimeStylus secundário.
- Você pode espalhar a carga computacional de seus plug-ins síncronos em dois threads, reduzindo os atrasos na coleta de tinta em alguns computadores Tablet.
O diagrama a seguir ilustra o fluxo de dados de caneta tablet por meio de dois objetos RealTimeStylus em cascata e suas coleções de plug-in.
Neste diagrama, o círculo com letras "A" representa dados de caneta tablet que já foram processados pelos objetos RealTimeStylus primários e secundários e foram colocados na fila de saída do objeto RealTimeStylus secundário. O círculo com letras "B" representa dados de caneta tablet que já foram processados pelo objeto RealTimeStylus primário e adicionados à fila de saída do objeto RealTimeStylus primário e ainda não foram enviados para o objeto RealTimeStylus secundário. O círculo com letras "C" representa os dados da caneta tablet que o objeto RealTimeStylus primário está processando no momento. Ele é enviado para a coleção de plug-in síncrono e colocado na fila de saída. O círculo vazio representa a posição na fila de saída em que os dados futuros da caneta tablet são adicionados.
Restrições
Se você usar o construtor RealTimeStylus padrão, criará um objeto RealTimeStylus que só pode aceitar a entrada de outro objeto RealTimeStylus .
A lista a seguir descreve as restrições associadas ao uso do modelo RealTimeStylus em cascata.
- Somente dois objetos RealTimeStylus podem ser usados , um objeto RealTimeStylus primário e um objeto RealTimeStylus secundário.
- O objeto RealTimeStylus primário deve ser criado com um construtor que usa o parâmetro attachedControl ou handle . O objeto RealTimeStylus secundário deve ser criado com o construtor sem argumento.
- O objeto RealTimeStylus secundário deve ser o único plug-in assíncrono na coleção de plug-ins assíncrona do objeto RealTimeStylus primário.
- Um objeto RealTimeStylus secundário só pode ser anexado a um objeto RealTimeStylus primário por vez. Se ele for adicionado a um segundo objeto RealTimeStylus primário, o método Add lançará uma exceção e o objeto RealTimeStylus secundário não será anexado ao segundo objeto RealTimeStylus primário.
- O comportamento de alguns dos membros secundários do objeto RealTimeStylus é modificado. A tabela a seguir descreve o comportamento modificado desses membros.
Membro | Comportamento |
---|---|
GetDesiredPacketDescription | Esse método retorna as informações do objeto RealTimeStylus primário. Se o RealTimeStylus secundário não estiver anexado a um objeto RealTimeStylus primário, esse método retornará o valor padrão. |
SetDesiredPacketDescription | Esse método gera uma exceção InvalidOperationException . |
GetStyluses | Esse método retorna as informações do objeto RealTimeStylus primário. Se o RealTimeStylus secundário não estiver anexado a um objeto RealTimeStylus primário, esse método retornará uma matriz vazia. |
Enabled | Obter essa propriedade retorna as informações do objeto RealTimeStylus primário. Se o RealTimeStylus secundário não estiver anexado a um objeto RealTimeStylus primário, obter essa propriedade retornará o valor padrão. Nota: Definir essa propriedade gera uma exceção InvalidOperationException . |
WindowInputRectangle | Obter essa propriedade retorna as informações do objeto RealTimeStylus primário. Se o RealTimeStylus secundário não estiver anexado a um objeto RealTimeStylus primário, obter essa propriedade retornará o valor padrão. Nota: Definir essa propriedade gera uma exceção InvalidOperationException . |
- Espera-se que o objeto RealTimeStylus pai pare de funcionar quando o RealTimeStylus filho for Descartado.