Considerazioni generali sul threading

Di seguito sono riportate considerazioni generali sul threading durante lo sviluppo per Tablet PC.

Thread applicazione e non applicazione

Tutti gli eventi input penna vengono generati in un thread input penna separato e con priorità alta. In questo modo l'input penna può scorrere senza problemi anche quando un'applicazione viene eseguita lentamente. Tuttavia, i gestori eventi possono rallentare o bloccare il rendering dell'input penna.

Tutti gli eventi di riconoscimento generati dalle chiamate al metodo di riconoscimento in background vengono gestiti in un thread di riconoscimento in background separato con priorità normale.

Tutti gli eventi del mouse vengono generati nel thread principale dell'interfaccia utente dell'applicazione.

Considerazioni sulle prestazioni

Gestori di eventi

L'API (Tablet PC Platform Application Programming Interface) include un modello interattivo per gli eventi anziché un modello di notifica. Mantenere breve il codice nei gestori eventi per ridurre il tempo di blocco del rendering dell'input penna. La raccolta di input penna dal Tablet PC non è bloccata, ma l'applicazione non riceve l'input penna mentre l'applicazione è bloccata.

AutoRedraw, proprietà

Quando l'applicazione esegue il rendering personalizzato o quando l'applicazione è sensibile ai problemi di disegno, è possibile gestire manualmente la riproduzione e impostare la proprietà AutoRedraw su false per l'oggetto InkCollector , l'oggetto InkOverlay o il controllo InkPicture . Usare gli eventi nella tabella seguente per gestire l'aggiornamento.

Oggetto o controllo Evento
Inkcollector Oggetto
Eventi Control.Invalidated e Control.Paint del controllo sottostante.
Inkoverlay Oggetto
Eventi Control.Invalidated e Control.Paint del controllo sottostante.
Inkpicture Controllo
Eventi Control.Invalidated e Control.Paint ereditati del controllo InkPicture.

DynamicRendering, proprietà

Quando l'applicazione esegue il rendering personalizzato o quando si desidera ottenere le informazioni, ma non l'input penna, è possibile gestire la disposizione dell'input penna manualmente e disattivare il rendering in tempo reale dell'input penna impostando la proprietà DynamicRenderingsu false per l'oggetto InkCollector , l'oggetto InkOverlay o il controllo InkPicture .

Considerazioni sul threading di eventi

Gli eventi dell'API Della piattaforma tablet PC vengono generati su vari thread.

Eventi degli oggetti InkCollector e InkOverlay

La maggior parte degli eventi dell'oggetto InkCollector e InkOverlay viene generata nel thread input penna. Solo gli eventi del mouse per questi oggetti vengono generati nel thread dell'interfaccia utente. Ad esempio, per l'oggetto InkCollector , l'evento MouseDown viene generato nel thread dell'interfaccia utente e l'evento CursorDown viene generato nel thread input penna.

Eventi dell'oggetto Input penna e della raccolta Strokes

Gli eventi dell'oggetto Input penna e della raccolta Strokes possono provenire dal thread input penna o dal thread dell'interfaccia utente. Quando l'applicazione modifica l'oggetto Ink o l'insieme Strokes , l'evento viene generato nel thread dell'interfaccia utente. Quando l'oggetto InkCollector o InkOverlay aggiorna l'insieme Ink o Strokes , l'evento viene generato nel thread input penna.

I controlli InkPicture e InkEdit operano in un apartment a thread singolo (STA). Quando il controllo InkPicture o InkEdit aggiorna l'oggetto Ink o l'insieme Strokes , l'evento viene generato nel thread dell'interfaccia utente.

Eventi di riconoscimento

Gli eventi di riconoscimento vengono generati nel thread dell'interfaccia utente o nel thread di riconoscimento in background.

Eventi del pannello di input penna

Gli eventi PenInputPanel vengono generati nel thread in cui viene creato l'oggetto PenInputPanel.

Microsoft.Ink.InkCollector.DynamicRendering

Microsoft.Ink.InkOverlay.DynamicRendering

Microsoft.Ink.InkPicture.DynamicRendering

Microsoft.Ink.InkCollector.AutoRedraw

Microsoft.Ink.InkOverlay.AutoRedraw

Microsoft.Ink.InkPicture.AutoRedraw