AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TForm: Close verzögert?

Ein Thema von haentschman · begonnen am 21. Dez 2017 · letzter Beitrag vom 21. Dez 2017
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

TForm: Close verzögert?

  Alt 21. Dez 2017, 12:57
Hallöle...

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!

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!

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!

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...
Miniaturansicht angehängter Grafiken
transponder.png   close.png   close_button.png  

Geändert von haentschman (21. Dez 2017 um 13:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TForm: Close verzögert?

  Alt 21. Dez 2017, 13:28
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?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TForm: Close verzögert?

  Alt 21. Dez 2017, 13:29
...aber zwischen 185 und 391 vergehen ca. 3 Sekunden!
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: TForm: Close verzögert?

  Alt 21. Dez 2017, 13:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TForm: Close verzögert?

  Alt 21. Dez 2017, 13:48
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.

Zeig mal die Routine, in der dieser Event aufgerufen wird.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: TForm: Close verzögert?

  Alt 21. Dez 2017, 14:13
Moin...
Zitat:
Aber ganz sicher gibt es den! Der ist nämlich für die Zeitverzögerung verantwortlich.
Ich hasse es wenn du Recht hast. Zu meiner Verteidigung: 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...
  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 06:37 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