COM+ Threadingmodelle
COM+-Threadingmodelle werden um eine Objektauflistung herum entworfen, die als Apartment bezeichnet wird. Ein Apartment ist eine Sammlung von Kontexten, die in einem Prozess enthalten sind, wie in der folgenden Abbildung dargestellt.
Anrufe innerhalb einer Wohnung sind direkt, während Anrufe in wohnungsübergreifenden (out-of-process) indirekt sind und Proxy- und Stubcode erfordern. Apartments ermöglichen Objekte mit unterschiedlichen Synchronisierungs- und Reentranzeigenschaften und verfügen über zwei Kategorien: Singlethread und Multithreaded. Objekte in einem Singlethread-Apartment (STA) werden für den jeweiligen Thread ausgeführt, in dem sie erstellt wurden. STAs lassen die Ausführung jeweils nur einer Methode zu. Sie sind für Benutzeroberflächen konzipiert und basieren auf der Microsoft Windows-Nachrichtenwarteschlange, um eingehende Anrufe zu verarbeiten.
Objekte in einem Multithread-Apartment (MTA) werden in einem beliebigen Thread ausgeführt und erlauben eine beliebige Anzahl von Methoden gleichzeitig. MTAs unterstützen implizit die Reentrance.
COM+-Klassen sind mit einer ThreadingModel-Eigenschaft gekennzeichnet, die es COM+ ermöglicht, das Objekt im richtigen Apartment zu erstellen. Um zu bestimmen, in welchem Apartment ein Objekt erstellt wird, verwendet CoCreateInstance die ThreadingModel-Eigenschaft .
Threads müssen CoInitializeEx aufrufen, bevor sie COM+ verwenden können. Dadurch werden sie in der richtigen Wohnung und im richtigen Kontext erstellt. Das Standard Thread-Apartment wird als das erste STA bestimmt, das von CoInitializeEx aufgerufen wird. Dies ist in der Regel dem Standard Thread eines Prozesses zugeordnet. CoInitializeEx gibt den Typ des vom Thread benötigten Apartments an, indem die folgenden Flags festgelegt werden:
- COINIT_MULTITHREADED – Sucht den Thread im einzelnen Multithread-Apartment.
- COINIT_APARTMENTTHREADED– Platziert den Thread in einer neuen STA.
Die folgenden Themen in diesem Abschnitt enthalten weitere Informationen zur Verwendung von Threadingmodellen und -apartments in COM+:
Zugehörige Themen