Announcement

Collapse
No announcement yet.

MTS und SQLConnection im eigenen Thread

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MTS und SQLConnection im eigenen Thread

    Guten Abend,
    wir haben mit einem MTS-Objekt ein Problem in Verbindung mit Dantenbankverbindungen die in einen separaten Thread geöffnet werden.

    Folgendes Szenario haben wir:

    Die Anwendung wird gestartet, es besteht keine Verbindung zur Datenbank. Das Login-Formular wird angezeigt.

    Innerhalb des Login-Formulars wird eine Verbindug zur Datenbank über ein MTS-Object (TDCOMConnection) aufgebaut. Das Passwort und der User werden verifiziert. Das Login-Forumlar schliesst die Verbindung.

    Ergebniss: Es wird keine DB-Verbindung auf der Datenbank angezeigt.

    Der Hauptanwendung wird gestartet. Es wird über das MTS-Objekt eine neue Verbindung hergestellt. Diese ist permantent solange der Client angemeldet ist.

    Ergebniss: Es wird eine offene Db-Verbindung pro angemeldeter Client angezeigt.

    Um den Ladevorgang in einigen Dialogen für den Anwender transparenter zu gestalten und die Anwendung während des Ladevorgangs nicht zu blockieren, haben wir das Laden der Daten für den Dialog in einen eigenen Thread ausgelagert.
    Der Thread öffnet eine eigene Verbindung über das MTS-Objekt zur Datenbank.

    Ergebniss: Für diesen Client wird eine zusätzliche DB-Verbindung angezeigt. Der MTS-Monitor zeigt zwei Objekte an!

    Nachdem der Thread die Daten geladen hat, wird die Verbindung beendet.

    Ergebniss: Für diesen CLient werden nach wievor zwei DB-Verbindungen angezeigt. Das MTS-Object wurde vernichtet.

    Um zu prüfen, ob das MTS-Objekt tatsächlich die Verbindung der SQLConnection schliesst, habe ich entsprechende Log-Einträge erzeugt. Ich kann also sicherstellen, dass das Property Connected der SQLConnection auf false steht. Totzdem zeigt mit die IBConsole nach wievor zwei User für diesen Client auf der Datenbank an.

    Beende ich das Programm, werden alle User entfernt.

    Kennt jemand das Problem bzw. hat eine Idee, wo ich noch suchen kann?

    Meine Konstellation:

    Delphi2005 alle Updates, Firebird 1.5 sowohl unter Windows XP SP2 als auch unter Linux jeweils SuperServer. Die Verbindung zum MTS-Objekt wird über TDCOMConnection aufgebaut. Das MTS-Objekt basiert auf einem TMTSDatamodule. Das MTS-Objekt wurde ursprünglich mit Delphi 7 erzeugt.

    Vielen Dank für jeden Rat.

    Gruss
    Frank Link
Working...
X