![]() |
Delphi-Version: XE
Polling im TThread
Hallo alle... 8-)
Die "Anweisungen" sollen im Thread aller z.B. 10 Sekunden ausgeführt werden. Ein beherztes Sleep im Execute hat die gleiche Auswirkung. Nur wenn der Thread von Außen terminated wird dauert es ebenfalls 10 Sekunden bis zum Beenden was nicht gewünscht ist. ...ein Timer ist keine gute Wahl.:roll: PS: Diese "Aufgabe" habe ich zum ersten Mal. Lösungsvorschläge? :wink: (mal sehen ob ihr bessere habt 8-)) Ergänzung zu ![]() |
AW: Polling im TThread
Ein Event vielleicht, wo man 10 Sekunden wartet ob er auslöst und wenn nicht, dann die Aktion ausführt?
|
AW: Polling im TThread
Das entspricht ja der 2. Variante aus dem verlinkten Beitrag. Ich halte das auch für die richtige Lösung.
|
AW: Polling im TThread
Danke für deine Antwort. Event...wie meinst du das?
mein Vorschlag:
Delphi-Quellcode:
...auf die 100 ms "Versatz" kann man verzichten.
procedure TWorkerPolling.Execute;
var StartCount: Cardinal; CurrentCount: Cardinal; begin inherited; StartCount:= 0; while not Terminated do begin CurrentCount:= GetTickCount; if (CurrentCount - StartCount) > conPollingInterval then // conPollingInterval = 10000 begin // auszuführender Code StartCount:= CetTickCount; end; Sleep(100); // für Leerlauf end; end; Zitat:
|
AW: Polling im TThread
Zitat:
![]() Deine Variante geht natürlich auch, ist aber im Grunde busy-waiting und daher unschöner. |
AW: Polling im TThread
:P ok...das nächste Mal drücke ich mich geschickter aus. Events benutzte ich reichlich weil ich weis wie es geht... :cheer: Nur im Zusammenhang mit Thread und Auslösen / Warten stand ich auf dem Schlauch...
|
AW: Polling im TThread
Den Event beim
Delphi-Quellcode:
auslösen geht am elegantesten, wenn man
Terminate
Delphi-Quellcode:
überschreibt.
DoTerminate
|
AW: Polling im TThread
Zitat:
Zitat:
|
AW: Polling im TThread
Zitat:
Beides ist aber völlig unnötig, weil das Betriebssystem in Form von Events bereits eine perfekte Lösung anbietet. |
AW: Polling im TThread
Das einfachste und beste Beispiel, für das eben Genannte, ist die Delay-Funktion von Hagen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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-2025 by Thomas Breitkreuz