Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anwendung terminiert manchmal nicht (https://www.delphipraxis.net/126891-anwendung-terminiert-manchmal-nicht.html)

Die Muhkuh 4. Jan 2009 11:03


Anwendung terminiert manchmal nicht
 
Hi,

seit längerem bemerke ich, dass meine Anwendung sporadisch nicht terminiert. Ich starte sie, warte kurz, ohne etwas zu machen, schließe die Anwendung und lande wieder in Delphi, also alles wie es sein soll. Nun kommt es aber vor, dass ich genau den gleichen Weg gehe, aber die Anwendung, nach dem "Beenden" weiter läuft und ich explizit über den Stopp-Knopf die Anwendung anhalten muss.

Jetzt hab ich leider keine Ahnung, wo ich anfangen soll bzw. wie ich das Gebiet zum Suchen eingrenzen soll.

Hat jemand ein Tipp, wie man vorgehen könnte?

Vielleicht liegt es ja an den Komponenten. Ich nutze die Ribbons (die, die bei Delphi 2009 dabei sind), AnyDAC (Remoteverbindung zu einem MySQL-Server), ansonsten nichts spezielles.

Grüße

fkerber 4. Jan 2009 11:07

Re: Anwendung terminiert manchmal nicht
 
Hi!

Machst du irgendwas beim Beenden? Also so in FormClose o.ä.?

Ohne Quellcode wird die Suche wahrscheinlich schwierig...


Ciao, Frederic

mkinzler 4. Jan 2009 11:08

Re: Anwendung terminiert manchmal nicht
 
Am Besten mal im Debugger ansehen

Die Muhkuh 4. Jan 2009 11:15

Re: Anwendung terminiert manchmal nicht
 
Hi,

beim Beenden werden nur ein paar belanglose Objekte zerstört und die Verbindung zur Datenbank getrennt:

Delphi-Quellcode:
destructor TtlDatabase.Destroy;
begin
  if (FConnection.Connected) then
    Disconnect;

  FreeAndNil(FConnection);
  inherited;
end;
Markus: Das hatte ich schon versucht. Es läuft eine Zeile nach Application.Run (also auf das end.) und dann passiert nichts mehr.

mkinzler 4. Jan 2009 11:18

Re: Anwendung terminiert manchmal nicht
 
Setze mal in dem Konstruktor ein Breakpoint und setzte im Einzelschritt fort ( F7)

Die Muhkuh 4. Jan 2009 11:22

Re: Anwendung terminiert manchmal nicht
 
Hi,

ich hab mich mal durch den kompletten Destroy-Vorgang gewurschtelt und hab, so glaube ich, die Zeile gefunden:

Delphi-Quellcode:
if lThread then begin
      if AWaitForClose then begin
        lTimeOut := WaitForSingleObject(GClosedEvent, C_AD_PhysManagerShutdownTimeout) = WAIT_TIMEOUT;
        CloseHandle(GClosedEvent);
        GClosedEvent := 0;
      end;
Es geht um die Zeile mit dem WaitForSingleObject, die dauert immer unterschiedlich lange und manchmal sehr lange. Das Timeout steht auf 10000.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 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