![]() |
AW: Code vom Thread in einen Timer umziehen?
Zitat:
Zitat:
|
AW: Code vom Thread in einen Timer umziehen?
Polling (und nichts anderes soll der Timer ja anscheinend tun) bringt wenn überhaupt nur selten Performancevorteile.
|
AW: Code vom Thread in einen Timer umziehen?
Zitat:
Man könnte es noch etwas optimieren, wenn der Thread den Timer erst einschaltet, wenn es auch eine Änderung gab. Also im dem Stil:
Delphi-Quellcode:
Der Timer triggert dann nach der Zeit und schaltet sich selbst erst einmal wieder ab.
TThread.Synchronize(nil, procedure ()
begin MainForm.Progress := Self.Progress; MainFrom.Timer.Enabled := True; end); |
AW: Code vom Thread in einen Timer umziehen?
Wie wäre es mit TThread.Queue?
|
AW: Code vom Thread in einen Timer umziehen?
Bevor ich mich Queue widme eine Verständnisfrage:
- muss ich auch das Ändern des Hints und das Ändern des Icons des Tray-Icons meiner Anwendung sychronisieren? - muss ich auch einfaches "besorgen von Informationen" synchronisieren? Zum Beispiel das Besorgen der Caption eines Labels? |
AW: Code vom Thread in einen Timer umziehen?
Zitat:
Die Timer-Lösung macht ein Update nur einmal in der vorgegebenen Zeit, egal wie oft der Timer eingeschaltet wurde. Das bringt ein wenig "Ruhe" rein ;-) |
AW: Code vom Thread in einen Timer umziehen?
Zitat:
|
AW: Code vom Thread in einen Timer umziehen?
Ich habe das Gefühl, ich verstehe die Problemstellung nicht richtig, oder andere haben ein eigenes Verständnis von Threads. Ich persönlich war zumindest noch nie in der Verlegenheit, einen Thread pollen zu müssen, das kommt mir so "von hinten durch die Brust ins Auge" vor.
|
AW: Code vom Thread in einen Timer umziehen?
Und genau das ist der Punkt den ich meine. Siehst du wie aufwändig und fummelig das jetzt schon wird? Lass den Thread die eigentliche Arbeit machen, mach deine Oberflächen-Aktualisierungen in einem Timer und du bist schon fertig. 8-)
|
AW: Code vom Thread in einen Timer umziehen?
Mein Senf dazu:
Gib dem Arbeiterthread ein Event-Property. Definiere im Form eine Aktualisierungsprozedur. Weise diese Aktualisierungsprozedur dem Thread-Property zu. Lass den Thread entscheiden, ob sein Zustand eine Aktualisierung rechtfertigt. Wenn ja, dann das Property (die Aktualisierungsprozedur) mittels Synchronize aufrufen. In der Aktualisierungsprozedur prüfst Du, ob die Form sichtbar ist und machst die Aktualisierungen oder nicht. Damit ist erreicht, daß dem Thread die Form nicht bekannt sein muß und es gibt eine klare Zuständigkeitstrennung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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