Also wenn ich mit Delphi-Bordmitteln einen
COM-Server baue, dann wähle ich "Multithreaded" und als Threading-Modell "Free". Ich hab das mal durch Ausprobieren hinbekommen. Die EXE wird einmalig gestartet, nur für jede Verbindung wird ein eigenes
COM-Objekt erzeugt (im Speicher).
Ich habe ein Hauptformular, das im OnCreate einmalig die 'globalen', also instanzübergreifenden Objekte in einem Datenmodul erzeugt, also irgendwelche Lookuplisten usw. Die einzelnen Instanzen meines
COM-Objektes (die Implementierung des
COM-Servers) greifen auf diese globale Instanz zu, wobei ich den Zugriff über CriticalSections kapsele, damit sich die Objekte nicht auf die Füße treten.
Vermutlich geht es auch anders, einfacher und besser, aber meine Lösung funktioniert und hat mich zum Ziel geführt.