Compartilhar via


Considerações sobre COM e Automação e Encadeamento

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

Acesso thread-safe

Com exceção dos controles InkPicture e InkEdit, os objetos Tablet PC são thread-safe e estão marcados como tal. Ao serem marcados como ambos, eles podem ser executados em um STA (apartamento de thread único) ou em um MTA (apartamento multithread).

Os formulários do Windows utilizam o modelo STA porque são baseados em janelas nativas do Win32. Além disso, espera-se que os threads que utilizam tanto janelas do Win32 quanto COM adotem o modelo de apartamento de thread único.

Aplicativos STA e MTA

Se o aplicativo for executado em um MTA ou usar o FTM (marshaler threaded gratuito), 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 ao InkCollector ou ao 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 que está marcado como MTA ou 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.

Receptores 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 o coletor de eventos.

Exceções em manipuladores de eventos

As 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 da sua aplicação. Da mesma forma, os valores HRESULT não são propagados dos manipuladores de eventos do Tablet PC. Se um aplicativo usando 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 do C++

Considerações gerais sobre execução de threads

Considerações sobre o gerenciamento de threads em bibliotecas