Forum: Programmieren allgemein
by DieDolly,
2. Mär 2019
Muss bei überschriebenen Terminate das inherited dann raus? Weil sonst gibt es ja wieder die Probleme die du erwähntest.
public
procedure Terminate; // nicht virtuell
end;
procedure TTestThread.Terminate;
begin
Forum: Programmieren allgemein
by DieDolly,
2. Mär 2019
Idee zu WaitFor:
ich setze von Extern ein Flag das sagt, dass das Sleep unterbrochen werden kann. Das werte ich dann hier aus
i := 0;
while i < 5000 do
begin
Inc(i);
Sleep(1);
Forum: Programmieren allgemein
by DieDolly,
2. Mär 2019
Wenn ich in die Bedingung ein showmessage('X') schreibe, wird mir das bei Programmende angezeigt, obwohl der Thread schon komplett durch ist.
Forum: Programmieren allgemein
by DieDolly,
2. Mär 2019
Kann man den Thread auch einfach terminieren?
Ich dachte an sowas. Aber das gibt wieder eine Fehlermeldung, wenn der Thread nicht mehr existiert.
Sollten diese beiden Vergleiche nicht eigentlich greifen, wenn der Thread schon lange fertig ist?
// FormDestroy
if Assigned(TTestThread.TestThread) and (TTestThread.TestThread <> nil) then
TTestThread.TestThread.Terminate;
Forum: Programmieren allgemein
by DieDolly,
2. Mär 2019
Stark vereinfacht habe ich folgende Threadklasse.
Erstellt wird die mit einem Aufruf von TTest.Run (passiert bei Programmstart und sieht schöner aus als irgendwas anonymes oder mit lokal deklarierten Klassenvariablen). Die private Deklaration von TestThread brauche ich extern nicht, deswegen private.
Das Sleep 10 Sekunden ist zum Testen da.
Wenn ich das Programm innerhalb der ersten 10...