Delphi-PRAXiS
Seite 2 von 3     12 3      

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/)
-   -   Zugriff auf TProgressbar.Position aus TThread.Queue (https://www.delphipraxis.net/211464-zugriff-auf-tprogressbar-position-aus-tthread-queue.html)

TurboMagic 20. Sep 2022 20:50

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Liste der Anhänge anzeigen (Anzahl: 1)
Komisch, ich habe jetzt das gewünschte Testprogramm geschrieben, siehe Anhang.
Nur: es knallt da nicht beim Zugriff auf den Progressbar, das Label wird aber
nie aktualisiert :?

Bin verwirrt.

Grüße

TurboMagic

jaenicke 20. Sep 2022 20:53

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Zitat:

Zitat von TurboMagic (Beitrag 1512155)
Nur: es knallt da nicht beim Zugriff auf den Progressbar, das Label wird aber
nie aktualisiert :?

Da du im Kontext des Hauptthreads (in Queue) ein Sleep drin hast, blockierst du den Hauptthread.

Ja, bei mir gibt es auch keinen Fehler. Da muss etwas anderes los sein. Kannst du vielleicht einen Screenshot von Delphi machen, wenn der Fehler im echten Projekt auftritt? Damit man den Stacktrace usw. sieht?

TurboMagic 20. Sep 2022 21:18

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das mit dem Sleep: Duh! War aber nur im Testprogramm so.
Anbei ein Screenshot und siehe da: kein Stsck Trace!
Crash ist in Zeile 190.

Uwe Raabe 20. Sep 2022 21:58

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
In deinem ersten Beispiel hattest du das Sleep direkt hinter dem ReportProgress. Damit bekommt man nicht nur einen flüssigen Ablauf hin, sondern das Label wird auch aktualisiert. Fehlt das Sleep, schreibt der Thread die Synchronize-Queue voll und der Hauptthread hat keine Zeit das Label zu aktualisieren. Am Ende steht es dann auf 200.

Wenn es an diesem Beispiel nicht auftritt, dann ist das Beispiel noch nicht genau genug an das Realprogramm angepasst.

jaenicke 20. Sep 2022 22:05

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Zitat:

Zitat von TurboMagic (Beitrag 1512157)
Das mit dem Sleep: Duh! War aber nur im Testprogramm so.
Anbei ein Screenshot und siehe da: kein Stsck Trace!

Dafür musst du noch auf Anhalten drücken. ;-)

himitsu 20. Sep 2022 22:42

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Und eventuell noch einmal F7 ... direkt nach einer Exception bekommt Delphi das manchmal/oftmals nicht sofort hin, während der Stack noch zwischen zwei Codezeilen hängt.

TurboMagic 21. Sep 2022 19:43

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, hier ein neuer Screenshot, diesmal mit Callstack.

himitsu 21. Sep 2022 20:14

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
mach da mal ein Try-Except drumrum und kopieren den Code "nochmal" ins Except ... dann kannst du nach dem Knall nochmal manuell reindebuggen (F7) und überall vorher sehen, was die Variablen sagen.

TurboMagic 21. Sep 2022 20:21

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Liste der Anhänge anzeigen (Anzahl: 1)
Scheint da alles nil zu sein.
Welche Variable wäre da interessant?
Siehe Anhang.

himitsu 21. Sep 2022 20:24

AW: Zugriff auf TProgressbar.Position aus TThread.Queue
 
Du bist nicht zufällig grade dabei die Form/Anwendung zu schließen, bzw. es wurde kurz vorher gemacht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr.
Seite 2 von 3     12 3      

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