AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Controls sofort aktualisieren ohne ProcessMessages
Thema durchsuchen
Ansicht
Themen-Optionen

Controls sofort aktualisieren ohne ProcessMessages

Ein Thema von Photoner · begonnen am 6. Jul 2015 · letzter Beitrag vom 7. Jul 2015
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 6. Jul 2015, 16:59
Ich kann jetzt gerade nicht probieren, ob es auch unter XE5 funktioniert, aber in XE8 tut es ein simples PaintTo(Canvas); um das Form komplett zu aktualisieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.558 Beiträge
 
Delphi 12 Athens
 
#2

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 6. Jul 2015, 17:36
Unter XE5 funktioniert PaintTo (canvas) ebenfalls.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 6. Jul 2015, 17:56
Auch wenn das funktioniert, friert die Anwendung trotzdem für 2,5 Sekunden ein.

Das ist nicht so im Sinne des UIThread-Erfinders, gelle?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 6. Jul 2015, 19:06
Das Stichwort heißt : TIdleWorker

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 6. Jul 2015, 19:09
Das Stichwort heißt : TIdleWorker

Mavarik
Nein, eine Aktion, die 2,5 Sekunden dauert gehört in einen Thread und nicht in den UIThread
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 7. Jul 2015, 00:58
Nein, eine Aktion, die 2,5 Sekunden dauert gehört in einen Thread und nicht in den UIThread
Ja und nein...

Leider ist es so, dass auf einem "schlappen" 1-CPU-1-Core-Device ein Thread die Performance des UIThread's so schmälert, dass z.B. die Timer-Animationen von Firemonkey nicht mehr "schön" laufen...

Daher die Devise: UIAktion's Event entgegen nehmen (z.b. ein OnClick) dann kurz den IdleWorker initialisieren und so schnell wie möglich die komplette CPU Zeit an die UIThread abgeben...

Wenn das OnIdle dann aufgerufen wird, kann "Deine" 2,5 Sekunden Aktion gerne in einem "richtigen" Thread gestartet werden... Aber erst dann...

Wahrscheinlich wird man sowieso vorher ein "processing" an zeigen...
  Mit Zitat antworten Zitat
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Controls sofort aktualisieren ohne ProcessMessages

  Alt 7. Jul 2015, 08:00
Danke für die Antworten!
Chris
  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 12:47 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-2025 by Thomas Breitkreuz