Vielleicht noch ein Versuch der Erklärung:
Ich habe eine Anwendung, die verschiedene Dinge ausrechnet. Das geschieht normalerweise durch einen Anwender, der die Anwendung startet, ursprünglich ganz ohne
COM. Daher die Instanzen ohne einen
COM-Client.
Nun gibt es aber auch andere Anwendungen, die automatisch mit meinem Programm diese Rechnungen durchführen sollen. Damit sie das können, habe ich der Anwendung ein Automatisierungsobjekt verpasst. Meine Anwendung ist somit für die externen Programme erreichbar.
Nun startet also der Nutzer einige Instanzen und weitere Instanzen sollen via
COM-Automatisierung automatisch von externen Programmen erzeugt werden. Wie gesagt, das funktioniert auch soweit. Mittels ciSingleInstance als Instanziierung erzeugen die Clients sich alle ihre jeweils eigene Instanz. Nur eben nicht, wenn ein Nutzer zuvor andere Instanzen des Programms gestartet hat, die (bisher) über keinen Client verfügen und auch keinen bekommen sollen. Dann werden diese manuell gestarteten Instanzen von den
COM-Clients in Beschlag genommen, statt eine neue Instanz zu erzeugen.