Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TForm: Close verzögert? (https://www.delphipraxis.net/194686-tform-close-verzoegert.html)

haentschman 21. Dez 2017 11:57

TForm: Close verzögert?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallöle...8-)

Ich habe eine Anmeldeform welche von der Businesslogik angezeigt wird. Wenn vom Transponder gelesen wurde (DoOnReadTransponder), soll die Form geschlossen werden. Nur braucht die Form zum Schließen ca. 3 Sekunden! :shock:

Früher habe ich die Transponderlogik in der Businesslogik gehabt. Über FLoginForm.Close sollte die Form geschlossen werden. Nur das Beenden des ShowModal wurde 3 Sekunden später ausgeführt. Nun habe ich die Transponderlogik in die Anmeldeform verlegt. Das gleiche Spiel! :evil:

Zeilen (siehe Bilder)

179: sofort nach dem Lesen des Transponders. Bis 185 vergehen Milisekunden.
391: in FormClose vergehen bis 395 nur Millisekunden.
...aber zwischen 185 und 391 vergehen ca. 3 Sekunden! :shock:

PS: alle Logik ist in der Anmeldeform auskommentiert
PS: Wenn ich den Cancel Button betätige (ModalResult := mrCancel) ist die Form sofort weg.
PS: Seattle alle Updates

Jetzt seid ihr dran mir das zu erklären...:wink:

jaenicke 21. Dez 2017 12:28

AW: TForm: Close verzögert?
 
Um das zu debuggen könntest du einfach mal an der Stelle, die 3 Sekunden dauert, nach 1 Sekunde in Delphi auf Pause drücken. Dann kannst du im Stacktrace einmal schauen wo du da bist. Oft sieht man dann schon die Lösung.

Dauert es denn auch so lange, wenn du direkt Close benutzt statt das ModalResult zu setzen?

Uwe Raabe 21. Dez 2017 12:29

AW: TForm: Close verzögert?
 
Zitat:

Zitat von haentschman (Beitrag 1389416)
...aber zwischen 185 und 391 vergehen ca. 3 Sekunden! :shock:

Dann check mal den Code nach dem Aufruf von DoOnReadTransponder. Das ModalResult wird ja erst nach dem Application.HandleMessage überprüft und in diesem HandleMessage wird ja irgendwann mal das DoOnReadTransponder aufgerufen. Was immer danach kommt dauert halt so lange.

haentschman 21. Dez 2017 12:33

AW: TForm: Close verzögert?
 
Danke...
Zitat:

Dauert es denn auch so lange, wenn du direkt Close benutzt statt das ModalResult zu setzen?
...ja.
Zitat:

Dann check mal den Code nach dem Aufruf von DoOnReadTransponder...Was immer danach kommt dauert halt so lange.
...da gibt es keinen Code mehr danach.
Zitat:

PS: alle Logik ist in der Anmeldeform auskommentiert

Uwe Raabe 21. Dez 2017 12:48

AW: TForm: Close verzögert?
 
Zitat:

Zitat von haentschman (Beitrag 1389423)
Zitat:

Dann check mal den Code nach dem Aufruf von DoOnReadTransponder...Was immer danach kommt dauert halt so lange.
...da gibt es keinen Code mehr danach.

Aber ganz sicher gibt es den! Der ist nämlich für die Zeitverzögerung verantwortlich. :-D

Zeig mal die Routine, in der dieser Event aufgerufen wird.

haentschman 21. Dez 2017 13:13

AW: TForm: Close verzögert?
 
Moin...:P
Zitat:

Aber ganz sicher gibt es den! Der ist nämlich für die Zeitverzögerung verantwortlich.
:oops: Ich hasse es wenn du Recht hast. :wink: Zu meiner Verteidigung: :wink: Die Unit mit der Transponderverarbeitung ist nicht von mir. Nach dem Event, welches ich verarbeite, wurde ein Comport.Open := False und danach ein ComPort.Open := True gemacht.
Zitat:

// ! Wichtig: Schießen und Öffenen
Original Zitat. Ist das bei dem TApdComPort nötig?

Danke an Alle...8-)


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