Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   IdleHandler - Mausbewegung lässt PC schneller arbeiten (https://www.delphipraxis.net/162386-idlehandler-mausbewegung-laesst-pc-schneller-arbeiten.html)

Phiennes 20. Aug 2011 03:13

IdleHandler - Mausbewegung lässt PC schneller arbeiten
 
Hi Leute,

ich programmiere ein Programm, dass Text-Dateien einliest und verarbeitet. Da es sich um eine ganze Menge solcher Dateien handelt, nutze ich den IdleHandler. Da dieser nicht alle Arbeitsschritte gleichzeitig ausführen soll, wird er durch die Variable "count" gesteuert. Dh. er erledigt jedes Mal nur einen von 5 Arbeitsschritten.

Mein Programm funtioniert soweit ganz gut. Das seltsame Problem jedoch ist, dass es sehr viel schneller funktioniert, wenn ich beim Ausführen die Maus bewege?!?

Ich hoffe ihr könnt mir helfen.

lG Phiennes


Oh Man bin ich doof....
Hab den Fehler gefunden: Wenn ich die Funktion mit "exit;" verlasse, sollte ein "Done:= false;" davor stehen^^.

jaenicke 20. Aug 2011 05:12

AW: IdleHandler - Mausbewegung lässt PC schneller arbeiten
 
Bist du sicher, dass OnIdle so gut dafür ist? Ich würde für so etwas eher z.B. einen Thread benutzen...

Phiennes 20. Aug 2011 10:15

AW: IdleHandler - Mausbewegung lässt PC schneller arbeiten
 
Ne die Arbeitsschritte müssen ja alle in einer bestimmten Reihenfolge abgearbeitet werden. Ich hätte sie also auch in einer Procedure sofort bearbeiten können, aber dann würde mein Programm jedes Mal für ein paar Sekunden nicht reagieren. Dafür sind Threads doch nicht geeignet oder?

PS: Ich finde den Button nicht, wo ich die "offene Frage" als Beantwortet makieren kann.

rollstuhlfahrer 20. Aug 2011 10:19

AW: IdleHandler - Mausbewegung lässt PC schneller arbeiten
 
Zitat:

Zitat von Phiennes (Beitrag 1118213)
Mein Programm funtioniert soweit ganz gut. Das seltsame Problem jedoch ist, dass es sehr viel schneller funktioniert, wenn ich beim Ausführen die Maus bewege?!?

Tja, wenn du die Maus bewegst, dann werden Nachrichten abgearbeitet und dein Programm landet häufiger wieder im Idle-Modus. Und jedes mal arbeitest du eine Aufgabe ab. Die Schlussfolgerung kannst du dann selbst ziehen.

Zitat:

Zitat von Phiennes (Beitrag 1118238)
Ne die Arbeitsschritte müssen ja alle in einer bestimmten Reihenfolge abgearbeitet werden. Ich hätte sie also auch in einer Procedure sofort bearbeiten können, aber dann würde mein Programm jedes Mal für ein paar Sekunden nicht reagieren. Dafür sind Threads doch nicht geeignet oder?

Doch. Da ein Thread nichts anderes ist als eine normale Prozedur, die halt "gleichzeitig" zu einer anderen ausgeführt wird. Deine Reihenfolge bekommst du, indem du eine Schleife einbaust und dann immer wieder die aktuelle Aufgabe ausführst.

Bernhard

igel457 20. Aug 2011 10:29

AW: IdleHandler - Mausbewegung lässt PC schneller arbeiten
 
Im Idle-Handler einfach am Ende
Delphi-Quellcode:
Done := false;
einfügen. Das sollte das Problem lösen.

Bernhard Geyer 20. Aug 2011 12:40

AW: IdleHandler - Mausbewegung lässt PC schneller arbeiten
 
Zitat:

Zitat von igel457 (Beitrag 1118241)
Im Idle-Handler einfach am Ende
Delphi-Quellcode:
Done := false;
einfügen. Das sollte das Problem lösen.

Und wenn der Fragesteller auch noch die Hilfe zum OnIdle-Handler durchliest sollte auch klar sein was sein Problem ist :stupid:


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