Threadtypen des COM+-Ressourcendependers
Aufrufe an einen COM+-Ressourcensender können aus einem der folgenden Threadtypen stammen:
- Apartmentthread (STA)
- Freier Thread (MTA)
- Nicht-COM-Thread (Anwendung oder Garbage Collector-Thread des Speicherbereinigungs-Managers)
Wenn ein Ressourcensender kein COM-Objekt ist, muss er aufrufe, die von jedem Thread eintreffen, jederzeit verarbeiten können. Wenn es sich bei einem Ressourcenspender um ein COM-Objekt handelt, sollte das COM-Objekt mit dem Threadingmodell Both registriert werden. Dadurch können STA- oder MTA-Threads den Ressourcenspender ohne Threadschalter erstellen und verwenden.
Wenn ein Ressourcenspender ein anderes COM-Objekt erstellt und verwendet (z. B. einen Out-of-Process-Ressourcen-Manager), muss der Ressourcenverzehrer möglicherweise mehrere Proxys für dieses andere COM-Objekt verwalten und sicherstellen, dass Aufrufe an das Objekt mithilfe des entsprechenden Proxys für den aufrufenden Thread ausgeführt werden. Wenn der Ressourcensparer dieses Objekt erstellt, marshallt er den Verweis und speichert ihn. Bevor das -Objekt erneut aufgerufen wird, muss es dieMarshal-Verbindung zum Erstellen eines Proxys für den aufrufenden Thread enttmarshalieren.
Es kann effizienter sein, diese threadspezifischen Proxys zwischenspeichern, indem eine Zuordnung von der Thread-ID zu einem Proxyzeiger gespeichert wird. Diese Zuordnung wird erweitert, wenn neue Threads im Prozess verwendet werden.