![]() |
AW: Thread + Timer, Einbinden von TimerThread.pas
Ich denke ich habs jetzt raus.
Das while in override ExecuteTimed muss natürlich raus weil das TCustomThread.Execute; in einer Schleife ja auch immer ExecuteTimed aufruft. Nun funktioniert auch Enabled richtig. Zitat:
Dann wird Beitrag 18 vermutlich falsch sein ![]() |
AW: Thread + Timer, Einbinden von TimerThread.pas
Zitat:
Du machst eine Ableitung, überschreibst ExecuteTimed und gut ist. Im alles andere kümmert sich die Thread-Klasse |
AW: Thread + Timer, Einbinden von TimerThread.pas
Zitat:
Delphi-Quellcode:
Und in TCustomThread.Execute
public
property Event: TEvent read FEvent write FEvent; // Damit man Event von Außen überhaupt sieht
Delphi-Quellcode:
Nur bin ich mir bei der letzten Zeile nicht so sicher, ob das OK ist.
// Aus
if FEvent.WaitFor(LInterval) = TWaitResult.wrTimeout then // wird if FEvent.WaitFor(LInterval) in [TWaitResult.wrTimeout, TWaitResult.wrSignaled] then Von Außen kann man dann aufrufen
Delphi-Quellcode:
TestThread.Event.SetEvent;
|
AW: Thread + Timer, Einbinden von TimerThread.pas
Delphi-Quellcode:
Das ist Ok, aber den Event ohne Setter und Getter sichtbar machen nicht.
if FEvent.WaitFor(LInterval) in [TWaitResult.wrTimeout, TWaitResult.wrSignaled] then
Lass das weg und benutze im code doch einfach das Enabled Property, da wird der Event auch ausgelöst. (Threadsafe) |
AW: Thread + Timer, Einbinden von TimerThread.pas
Wenn ich aber das Property Enabled verwende, hat das nicht denselben Zweck.
SetEvent bräuchte ich, um sofort aus dem WaitFor rauszukommen und alles weitere in ExecuteTimed auszuführen. Enabled auf False stellen würde WaitFor für INFINITE lang im Kreis rennen lassen. |
AW: Thread + Timer, Einbinden von TimerThread.pas
Zitat:
|
AW: Thread + Timer, Einbinden von TimerThread.pas
Zum Glück seid ihr keine Lehrer. Denn sonst hättet ihr mit circa 90% solcher Idioten zu tun wie ich :thumb:
|
AW: Thread + Timer, Einbinden von TimerThread.pas
Zitat:
|
AW: Thread + Timer, Einbinden von TimerThread.pas
Eine Frage habe ich noch zu diesem ExecuteTimes.
In ExecuteTimed ist eine while-Schleife. Was aber, wenn ich eine Aufgabe habe die von Anfang bis Ende nur einmal durchlaufen soll und wo ich keine Schleife benötige? Würde man in diesem Falle den Thread dafür erzeugen und sofort terminieren? |
AW: Thread + Timer, Einbinden von TimerThread.pas
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 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