Considerações gerais sobre threading

Veja a seguir considerações gerais sobre threading ao desenvolver para Tablet PC.

Threads de aplicativo e não aplicativos

Todos os eventos de tinta são gerados em um thread de tinta separado e de alta prioridade. Isso permite que a tinta flua sem problemas mesmo quando um aplicativo está sendo executado lentamente. No entanto, os manipuladores de eventos podem reduzir ou bloquear a renderização da tinta.

Todos os eventos de reconhecimento gerados por chamadas de método de reconhecimento em segundo plano são tratados em um thread de reconhecimento em segundo plano separado de prioridade normal.

Todos os eventos do mouse são gerados no thread principal da interface do usuário do aplicativo.

Considerações sobre desempenho

Manipuladores de eventos

A API (interface de programação de aplicativo) do Tablet PC Platform tem um modelo interativo para eventos em vez de um modelo de notificação. Mantenha o código em manipuladores de eventos curto para reduzir o tempo em que a renderização de tinta está bloqueada. A coleção de tinta pelo Tablet PC não está bloqueada, mas seu aplicativo não recebe a tinta enquanto seu aplicativo está bloqueado.

Propriedade AutoRedraw

Quando seu aplicativo estiver executando renderização personalizada ou quando seu aplicativo estiver sensível a problemas de pintura, você poderá manipular a repintura por conta própria e definir a propriedade AutoRedraw como false para o objeto InkCollector , o objeto InkOverlay ou o controle InkPicture . Use os eventos na tabela a seguir para manipular o repositório.

Objeto ou controle Evento
Inkcollector Objeto
Os eventos Control.Invalidated e Control.Paint do controle subjacente.
Inkoverlay Objeto
Os eventos Control.Invalidated e Control.Paint do controle subjacente.
Inkpicture Controle
Os eventos control.Invalidated e Control.Paint herdados do controle InkPicture.

Propriedade DynamicRendering

Quando seu aplicativo estiver executando a renderização personalizada ou quando você quiser as informações, mas não a tinta, você poderá manipular a colocação da tinta por conta própria e desativar a renderização em tempo real da tinta definindo a propriedade DynamicRendering como false para o objeto InkCollector , o objeto InkOverlay ou o controle InkPicture .

Considerações sobre threading de eventos

Os eventos da API da Plataforma de Pc tablet são gerados em vários threads.

Eventos de objetos InkCollector e InkOverlay

A maioria dos eventos de objeto InkCollector e InkOverlay são gerados no thread de tinta. Somente os eventos do mouse para esses objetos são gerados no thread da interface do usuário. Por exemplo, para o objeto InkCollector , o evento MouseDown é gerado no thread da interface do usuário e o evento CursorDown é gerado no thread de tinta.

Eventos da coleção Ink Object and Strokes

Os eventos do objeto Ink e da coleção Strokes podem vir do thread de tinta ou do thread da interface do usuário. Quando o aplicativo manipula o objeto Ink ou a coleção Strokes , o evento é gerado no thread da interface do usuário. Quando o InkCollector ou o objeto InkOverlay atualiza o objeto Ink ou a coleção Strokes , o evento é gerado no thread de tinta.

Os controles InkPicture e InkEdit operam em um sta (apartamento com thread único). Quando o controle InkPicture ou InkEdit atualiza o objeto Ink ou a coleção Strokes , o evento é gerado no thread da interface do usuário.

Eventos de reconhecimento

Os eventos de reconhecimento são gerados no thread da interface do usuário ou no thread de reconhecimento em segundo plano.

Eventos do Painel de Entrada de Caneta

Os eventos PenInputPanel são gerados no thread no qual o objeto PenInputPanel é criado.

Microsoft.Ink.InkCollector.DynamicRendering

Microsoft.Ink.InkOverlay.DynamicRendering

Microsoft.Ink.InkPicture.DynamicRendering

Microsoft.Ink.InkCollector.AutoRedraw

Microsoft.Ink.InkOverlay.AutoRedraw

Microsoft.Ink.InkPicture.AutoRedraw