AGB  ·  Datenschutz  ·  Impressum  







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

Zugriff auf TProgressbar.Position aus TThread.Queue

Ein Thema von TurboMagic · begonnen am 19. Sep 2022 · letzter Beitrag vom 21. Sep 2022
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#7

AW: Zugriff auf TProgressbar.Position aus TThread.Queue

  Alt 20. Sep 2022, 12:52
Der Progress-Parameter ist sicher, weil da macht der Generic die anonyme Methode sich eine Copie von.

Bei OnProgress hat nicht, denn dort hat der nur eine Kopie des Self, welches nur so lange gültig ist, wie die TMyWorker-Instanz läuft.
Bei Synchronize kein Problem ... aber bem Queue muß man aufpassen.
Allerdings könnte man sich auch eine lokale Variable für OnProgress in ReportProgress anlegen ... dann ist TMyWorker egal und man muß nur noch auf das achten, wohin das Event geht, also TMainForm (hier gäbe es in Queue(procedure Möglichkeiten das gegenzuprüfen, z.B. über Application.MainForm, bzw. über Screen.Forms, ob der Form-Zeiger noch valide ist).


Ansonsten:
TStaticText, bzw. TPanel anstatt TLabel
und dann kann es als "richtiges" WinControl auch auf Messages reagieren,
also SendMessage(WM_SETTEXT), bzw SetWindowText und die ProgessBar auf PostMessage mit PBM_SETPOS.

SendMessage, weil wegen dem "PChar", der ja bei Ausführung noch gültig sein muß.
In das WndProc des Label kann man auch eine Message mit "Interger"-Parameter gängen, welcher Diesen nach String übersetzt und an Caption übergibt ... das ginge dann wieder als PostMessage.

PostMessage direkt an das Fenster/Control ... verschwindet das Fenster/Control vor Abarbeitung der Message in der MessageQueue (PostMessage), dann räumt Windows diese Message orgendlich auf ... kein eventuelle Ausführen nach Freigabe des Controls.

Bei der TThread.Queue wäre es also nett, könnte man sie auch (optional) an ein TWinControl/HWND oder zumindestens an ein TControl hängen. (dann würde Windows/Delphi die Prüfung ob noch da übernehmen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Sep 2022 um 12:54 Uhr)
  Mit Zitat antworten Zitat
 


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 12:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz