Announcement

Collapse
No announcement yet.

IBEvent und IBX4.62

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

  • IBEvent und IBX4.62

    <b>Probleme mit Register und UnregisterEvents</b>

    Hallo Leute,
    ich hatte immer Probleme mit den IBEvents unter IBX 4.xx, wenn ich den Zugriff auf die Datenbank in einer DLL habe (das Programm hängt sich auf bei registerevents). <br>
    Nun seit der Version 4.62 läuft dies wesentlich besser. Nun habe ich aber das Problem bei unregisterevents. DOrt hängt sich das Programm (die DLL) wieder auf.<br>
    Die DLL ist wie folgt aufgebaut:<br>
    1. Im initialization-Abschnitt : Datenmodul.Create<br>
    Dort wird nach erfolgreichem Conntect Registerevents aufgerufen<br>
    2. Zugriffe von der Anwendung (Arcview) laufen korrekt ab<br>
    3. Im finalization-Abschnitt : Datenmodul.Destroy<br>
    Dort erfolgt als erstes ein UnregisterEvents<br>
    .. und da beibt die Anwendung hängen<br><br>
    Wenn ich eine Funktion für UnregisterEvents in der DLL zur Verfügung stelle und vorm Ende der Anwendung separat aufrufe funktioniert das Ganze.<br><br>
    Der selbe Effekt tritt übrigens auch auf, wenn meine Anwendung ein kleiner (Delphi) Testrahmen ist.<br><br>
    Hat jemand eine Idee woran dies liegn kann?<br><br>
    Torsten

  • #2
    Hallo,

    von <i>Jeff Overcash</i> gibt es zu diesem Problem den folgenden Kommentar: "<i>There are timing problems with the Registered property. I suggest the AutoRegister instead that way the connection will shut down the Events before it actually closes. If I had to guess your connection is getting destroyed before the TIBEvent and the IBEvent is still registered so tries to unregister itself causing the problem.</i>"

    Comment


    • #3
      <b>Hallo Herr Kosch,</b><br><br>
      Vielen Dank für den Hinweis. Allerdings bringt auch die Verwendung von Autoregister keinen Erfolg. Ich gehe davon aus, dass ich bei der Verwendung dieser Eigenschaft weder RegisterEvents noch Unregisterevents aufrufen muss (darf?). Im Debugger kann ich sehen, dass UnregisterEvents automatisch aufgerufen wird, wenn Connected auf false gesetzt wird. <br><br>
      Die DLL hängt dann in der Procedure <b>ThreadEnded</b> im unit IBEvents. Meine DLL wird übrigens per Laufzeit geladen und entladen. Dies muss auch so sein, da meine eigentliche Anwendung nichts anderes kann.

      Torste

      Comment

      Working...
      X