Freigeben über


COM+-Ressourcenspenderthreadtypen

Aufrufe in einen COM+-Ressourcenspender können aus einem der folgenden Threadtypen stammen:

  • Apartmentthread (STA)
  • Freier Thread (MTA)
  • Nicht-COM-Thread (Anwendung oder der Garbage Collector-Thread des Dispenser-Managers )

Wenn ein Ressourcenspender kein COM-Objekt ist, muss er jederzeit in der Lage sein, Aufrufe zu verarbeiten, die von einem beliebigen Thread empfangen werden. Wenn ein Ressourcenspender ein COM-Objekt ist, sollte das COM-Objekt bei einem Threadingmodell von Both registriert werden. Dadurch können STA- oder MTA-Threads den Ressourcenspender ohne Threadswitch erstellen und verwenden.

Wenn ein Ressourcenspender ein anderes COM-Objekt erstellt und verwendet (z. B. einen Ressourcen-Manager außerhalb des Prozesses), muss der Ressourcenspender möglicherweise mehrere Proxys für dieses andere COM-Objekt verwalten und sicherstellen, dass Aufrufe des Objekts mithilfe des entsprechenden Proxys für den aufrufenden Thread erfolgen. Wenn der Ressourcenspender dieses Objekt erstellt, wird der Verweis marshallen und gespeichert. Bevor das Objekt erneut aufgerufen wird, muss es dieMarshalation aufheben, um einen Proxy für den aufrufenden Thread zu erstellen.

Es kann effizienter sein, diese Proxies pro Thread zwischenzuspeichern, indem eine Zuordnung von der Thread-ID zu einem Proxyzeiger beibehalten wird. Diese Zuordnung wird erweitert, wenn neue Threads im Prozess verwendet werden.

COM+-Ressourcenspenderkonzepte