Inprocserver32
Registriert einen 32-Bit-Prozessserver und gibt das Threadingmodell des Apartments an, in dem der Server ausgeführt werden kann.
Registrierungseintrag
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
{CLSID}
InprocServer32
(Default) = path
ThreadingModel = value
Hinweise
ThreadingModel ist ein REG _ SZ-Wert, der das Threadingmodell angibt. Die möglichen Werte werden in der folgenden Tabelle angezeigt.
| Wert | Beschreibung |
|---|---|
| Wohnung | Singlethread-Apartment |
| Beide | Singlethread-Apartment oder Multithread-Apartment |
| Kostenlos | Multithread-Apartment |
| Neutral | Neutrales Apartment |
Sie müssen für jedes vom Prozessserver bereitgestellte Objekt den gleichen Wert verwenden.
Wenn ThreadingModel nicht vorhanden ist oder nicht auf einen Wert festgelegt ist, wird der Server in das erste Apartment geladen, das im Prozess initialisiert wurde. Dieses Apartment wird manchmal als Haupt-Singlethread-Apartment (STA) bezeichnet. Wenn das erste STA in einem Prozess nicht durch einen expliziten Aufruf von CoInitialize oder CoInitializeEx, sondern durch COM initialisiertwird, wird es als Host-STA bezeichnet. Com erstellt z. B. ein Host-STA, wenn ein zu ladener In-Process-Server ein STA erfordert, aber derzeit kein STA im Prozess vorhanden ist.
Nach Möglichkeit wird der Prozessserver in das gleiche Apartment geladen wie der Client, der ihn lädt. Wenn das Threadingmodell des Clientapartments nicht mit dem angegebenen Modell kompatibel ist, wird der Server wie in der folgenden Tabelle angegeben geladen.
| Threadingmodell des Servers | Der Apartmentserver wird in ausgeführt. |
|---|---|
| Haupt-STA | |
| Beide | Gleiches Apartment wie Client |
| Kostenlos | Multithread-Apartment |
| Neutral | Neutrales Apartment |
Wenn das Threadingmodell des Servers Apartment ist, hängt das Apartment, in dem der Server geladen wird, von dem Apartment ab, in dem der Client ausgeführt wird, wie in der folgenden Tabelle angegeben.
| Der Apartmentclient wird in ausgeführt. | Der Apartmentserver wird in ausgeführt. |
|---|---|
| Multithreaded | Host STA |
| Neutral (im STA-Thread) | Gleiches Apartment wie Client |
| Neutral (im MTA-Thread) | Host STA |
COM kann auch ein Multithread-Apartment (MTA) des Hosts erstellen. Wenn ein Client in einem Singlethread-Apartment einen Prozessserver anfordert, dessen Threadingmodell Free ist, wenn kein MTA im Prozess vorhanden ist, erstellt COM einen Host-MTA und lädt den Server in ihn.
Für einen 32-Bit-Prozessserver müssen die Schlüssel InprocHandler32, InprocServer, InprocServer32 und Insertable registriert werden. Der InprocServer-Eintrag wird nur aus Gründen der Abwärtskompatibilität benötigt. Wenn sie fehlt, funktioniert die Klasse weiterhin, kann aber nicht in 16-Bit-Anwendungen geladen werden.
Wenn ein Container die Registrierung nach einem In-Process-Server durchsucht, hat die 16-Bit-Version Priorität mit einem 16-Bit-Container, und die 32-Bit-Version hat Priorität mit einem 32-Bit-Container.