AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Out of process Comserver als single Instance
Thema durchsuchen
Ansicht
Themen-Optionen

Out of process Comserver als single Instance

Ein Thema von hanspeter · begonnen am 3. Sep 2009 · letzter Beitrag vom 4. Sep 2009
Antwort Antwort
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Out of process Comserver als single Instance

  Alt 3. Sep 2009, 12:02
Hallo,

ich habe ein größeres Projekt mit Exefiles modularisiert.
Ein Hauptprogramm ruft, je nach Menüpunkt, eine Exe mit Kommandozeilen Parametern auf.
Das funktioniert zwar, hat jedoch zur Folge das bestimmte Module z.B. der Reportgenerator in jeder Exe eingebunden sind.
Ich habe deshalb die Reports in ein Out of Process-Server ausgelagert.

Mit Server := CoMyComServer.Create; instanciere ich diesen und gebe ihn mit Server := nil; frei.

Beim Erzeugen des Servers habe ich eine Instanz angegeben.

Delphi-Quellcode:
 TTypedComObjectFactory.Create(ComServer, TMyComServer, Class_MyComServer,
    ciSingleInstance, tmsingle);
Jedoch erzeugt jedes Programm was diesen Server aufruft eine neue Instanz des Servers.
(Mehrfach in der Taskleiste vorhanden.)

Kann mir wer auf die Sprünge helfen, was ich ändern muss, damit immer die gleiche Instanz verwendet wird?
Oder mache ich einen Denkfehler, wenn der Report von mehreren Programmen verwendet wird?


Gruß
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.090 Beiträge
 
Delphi 12 Athens
 
#2

Re: Out of process Comserver als single Instance

  Alt 3. Sep 2009, 17:09
"SingleInstance" bedeutet, daß der COM-Server nur einen einzelnen Client bedient. Gibt es mehrere Clients, wird für jeden ein eigener COM-Server erstellt. Du erreichst mit dieser Einstellung daher genau das Gegenteil von dem, was du willst.

Bei einem Multi-Instance-Server musst du allerdings selbst dafür sorgen, daß er auch in der Lage ist, mehrere Clients unabhängig voneinander zu bedienen.
Uwe Raabe
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Out of process Comserver als single Instance

  Alt 4. Sep 2009, 06:54
Zitat von Uwe Raabe:
"SingleInstance" bedeutet, daß der COM-Server nur einen einzelnen Client bedient. Gibt es mehrere Clients, wird für jeden ein eigener COM-Server erstellt. Du erreichst mit dieser Einstellung daher genau das Gegenteil von dem, was du willst.
Ups da habe ich die Dokumentation wohl falsch interpretiert.
Ein Programm meldet einen Druckauftrag an, dieser wird in einer Warteschlange eingereiht.
Den Registerteil für den Auftrag habe ich als kritischen Prozess markiert. Das sollte zur Synchronisation reichen?

Ich habe inzwischen mit der Com-Technologie eigentlich recht positive Erfahrungen gemacht.
Im Moment bin ich am Überlegen, ob ich meine Modularisierung per Exe-Files nicht auf Com-Server umstelle.
Das sollte wohl etwas flexibler sein.


Mit Gruß
Peter
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Out of process Comserver als single Instance

  Alt 4. Sep 2009, 10:55
So jetzt habe ich es hinbekommen.

Der Server wird mit nachfolgender Anweisung initialisiert.

Delphi-Quellcode:
 TTypedComObjectFactory.Create(ComServer, TMyComServer, Class_MyComServer,
    ciMultiInstance   , tmFree   );
tmFree erzeugt automatisch einen neuen Thread.
Das Teil verhält sich wunschgemäß.
Beim Starten des ersten Client wird eine Instanz erzeugt.
Beim Starten weiterer Clients ist nur eine Instanz vorhanden.
Mit dem Schließen des letzten Client, wird der Server geschlossen.

Gruß Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz