Compartilhar via


Considerações sobre threading com e automação

As seguintes considerações de threading de tablet pc são específicas para quando o COM (Component Object Model) e a Automação são usados.

Acesso thread-safe

Exceto para os controles InkPicture e InkEdit , os objetos tablet pc são thread-safe e são marcados como ambos. Ao serem marcados como ambos, eles podem ser executados em um único STA (threaded apartment) ou em um MTA (multithreaded apartment).

Os windows forms usam o modelo STA porque os windows forms são baseados em janelas nativas do Win32 que são inerentemente threaded apartment.

Aplicativos STA e MTA

Se o aplicativo for executado em um MTA ou usar o FTM (marshaler threaded livre), você deverá escrever um código thread-safe; no entanto, ao fazer isso, você pode melhorar determinados problemas de desempenho de tratamento de eventos.

InkCollector e InkOverlay

Seu aplicativo não deve liberar sua referência final para o InkCollector ou o objeto InkOverlay , destruindo assim o objeto, diretamente do thread de tinta. Em vez disso, o aplicativo deve liberar o InkCollector ou o objeto InkOverlay de um thread de aplicativo.

Cuidado: Um aplicativo marcado como MTA ou que usa o FTM, que permite chamadas diretas do thread de tinta para o apartamento do aplicativo, pode liberar sua referência final ao objeto InkCollector ou InkOverlay diretamente do thread de tinta; no entanto, isso causa uma falha irrecuperável do aplicativo.

Coletores de eventos

Se o aplicativo não estiver usando o FTM e um objeto e seu coletor de eventos forem criados em apartamentos diferentes, o evento será executado no thread que atende ao coletor de eventos.

Exceções em manipuladores de eventos

Exceções geradas de dentro dos manipuladores de eventos do Tablet PC são consumidas e não são visíveis para o restante ou seu aplicativo. Da mesma forma, os valores HRESULT não são propagados dos manipuladores de eventos do Tablet PC. Se um aplicativo que usa a camada COM gerar uma exceção, o thread em segundo plano será encerrado e a exceção será perdida. Nenhum manipulador de eventos adicional será chamado.

Exemplo de coletores de eventos C++

Considerações gerais sobre threading

Considerações sobre threading de biblioteca gerenciada