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 Formular Aktuallisierung (https://www.delphipraxis.net/121899-formular-aktuallisierung.html)

CADSDFrank 6. Okt 2008 21:20


Formular Aktuallisierung
 
Ich habe in einem Programm aufwändige numerische Simulationen laufen, wobei in regelmäßigen Zeitabständen (ca. je 10 – 50 Sekunden) eine graphische Aktuallisierung der Simulations-zwischen-ergebnisse in einem Formular (über Repaint) ausgegeben werden. Ein Prozessor ist dabei voll ausgelastet. Solange ich keine anderen Arbeiten parallel ausführe (z.B. Fenster verschieben, andere Programme starten, Fenster schließen und wieder öffnen) läuft die graphische Aktuallisierung normal. Sobald ich parallele Arbeiten starte läuft die Simulation im Hintergrund weiter, aber die graphische Aktuallisierung funktioniert nicht mehr.
Kann mir evtl. jemand weiterhelfen, ob es irgendein Ereignis gibt, das ich hier zusätzlich verarbeiten muß oder ein andere Vorschläge für eine Lösung, dass die graphische Aktuallisierung weiterläuft?
Vielen Dank
Frank

Meflin 6. Okt 2008 21:30

Re: Formular Aktuallisierung
 
Läuft die Simulation in einem eigenen Thread? Wenn nein, könnte bzw. sollte das dein Problem beheben! Denn dann läuft dein Formular quasi "gleichberechtigt" neben der Simulation...

CADSDFrank 6. Okt 2008 21:38

Re: Formular Aktuallisierung
 
Nein, leider läuft noch alles in einem "normalen" Programm. Habe aber auch schon überlegt, die Simulation in einem eigenen Tread laufen zu lassen oder auf mehrere Treads aufzuteilen, um mehrere Prozessoren besser auszulasten. Leider habe ich noch keine Erfahrungen mit Tread-Programmierung. Werde mich also einarbeiten müssen. Wo gibt es denn die besten Programmierbeispiele dafür?

s.h.a.r.k 6. Okt 2008 22:06

Re: Formular Aktuallisierung
 
schau mal hier. da hat luckie ein recht gutes tutorial geschrieben!

smallsmoker 6. Okt 2008 22:08

Re: Formular Aktuallisierung
 
application.processmessages ?

s.h.a.r.k 6. Okt 2008 22:33

Re: Formular Aktuallisierung
 
was?

das wäre eigentlich die passende antwort auf deine deine, smallsmoker. äußerst kurz, sehr knapp und teilweise nicht sehr hilfreich. ich denke, dass dir doch ein wenig mehr text dazu einfallen würde? sicherlich wäre es kein lerneffekt, wenn du ihm die komplette applikation geben würdest, aber ein wenig mehr an beschreibung wäre doch nicht schlecht, oder?! ;)

dann hol ich das nach, in form eines zitats aus der hilfe:
Zitat:

Durch einen Aufruf von ProcessMessages ermöglichen Sie der Anwendung, die Botschaften in der Warteschlange abzuarbeiten. ProcessMessages durchläuft die Windows-Botschaftswarteschlange so lange, bis diese leer ist, und gibt die Steuerung dann wieder an die Anwendung zurück.
d.h. wenn du das in eine schleife einarbeitest, welche die berechnungen vornimmt, dann kannst du während die berechnung läuft deine form verschieben, da eben das verschieben nachrichten erzeugt, welche dann "parallel" (ist ja nicht wirklich parallel ;) ) abgearbeitet werden. nun ist es aber so, dass jedes mal wenn Application.ProcessMessages aufgerufen wird deine schleife anhält. somit dauert die eigentliche berechnung noch länger, ergo ist dies nicht unbedingt zu empfehlen. sinnvoller wäre hier mit sicherheit ein thread, da dieser (bei mehreren prozessoren) wirklich parallel läuft.

CADSDFrank 7. Okt 2008 19:07

Re: Formular Aktuallisierung
 
Vielen Dank,
ich werde mich mit beiden Vorschlägen beschäftigen.
Frank


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