Udostępnij przez


Zagadnienia dotyczące wątkowania w COM i automatyzacji

Poniższe zagadnienia dotyczące wątkowania tabletu PC są specyficzne dla Modelu Obiektów Składowych (COM) i automatyzacji.

Bezpieczeństwo wątków

Z wyjątkiem kontrolek InkPicture i InkEdit, obiekty Tablet PC są wątkowo bezpieczne i są oznaczone jako jedno i drugie. Oznaczone jako oba, mogą być uruchamiane w jednowątkowym apartamencie (STA) lub wielowątkowym apartamencie (MTA).

Formularze systemu Windows korzystają z modelu STA, ponieważ formularze systemu Windows są oparte na natywnych oknach Win32, a wątki korzystające zarówno z okien Win32, jak i COM, powinny korzystać z apartamentów jednowątkowych.

Aplikacje STA i MTA

Jeśli aplikacja działa w usłudze MTA lub używa wolnego marshalera wątkowego (FTM), musisz napisać kod bezpieczny wątkowo; Jednak dzięki temu można poprawić niektóre problemy z wydajnością obsługi zdarzeń.

InkCollector i InkOverlay

Aplikacja nie powinna zwolnić swojej ostatniej referencji do obiektu InkCollector lub obiektu InkOverlay, co powodowałoby zniszczenie obiektu bezpośrednio z wątku atramentu. Zamiast tego aplikacja powinna zwolnić InkCollector lub obiekt InkOverlay z wątku aplikacji.

przestroga: Aplikacja oznaczona jako MTA lub używająca protokołu FTM, który umożliwia bezpośrednie wywołania z wątku atramentu do apartamentu aplikacji, może zwolnić końcowe odwołanie do InkCollector lub InkOverlay obiektu bezpośrednio z wątku atramentu; powoduje to jednak nieodwracalną awarię aplikacji.

Obsługiwacze zdarzeń

Jeśli aplikacja nie używa FTM i obiekt oraz jego odbiornik zdarzeń są tworzone w różnych przestrzeniach, to zdarzenie jest wykonywane w wątku obsługującym odbiornik zdarzeń.

Wyjątki w programie obsługi zdarzeń

Wyjątki zgłaszane z poziomu procedur obsługi zdarzeń komputera typu tablet zostają przechwycone i nie są widoczne dla reszty aplikacji. Podobnie wartości HRESULT nie są propagowane z programów obsługi zdarzeń komputera tabletu. Jeśli aplikacja korzystająca z warstwy COM zgłasza wyjątek, wątek w tle zostanie przerwany, a wyjątek zostanie utracony. Nie będą wywoływane żadne dodatkowe programy obsługi zdarzeń.

Przykład odbiorników zdarzeń C++

Ogólne uwagi dotyczące wątków

Zagadnienia dotyczące wątków Zarządzanej Biblioteki