Danke Thomas, das werde ich berücksichtigen.
Aber ich glaube ich bin dem Fehler auf die Spur gekommen.
Ich habe mal alle Objecte die ich im Create erzeuge auskommentiert, und dann läuft mein Thread, läßt sich beende und alle ist Okay.
Dann habe ich die schrittweise wieder eingebaut, und siehe da, als einen Timer wieder aufgenommen habe, tritt der Fehler wieder aus.
Ohne jetzt noch alle anderen Objecte zu testen (was ich aber noch mache) würde ich dann vielleicht hier den Fehler erst mal suchen.
Also im Thread.Create erzeuge ich den timer:
FUpdateTimer:=TTimer.Create(Nil);
und im meiner Execute sieht's so aus:
Delphi-Quellcode:
procedure TTCPThread.Execute;
begin
Try
FUpdateTimer.Interval:=60000;
Synchronize(
Procedure
begin
frm_main.Writelog('
Init TCP-Connection ('+FBindIP+'
@'+IntToStr(FBindPort)+'
)>('+FHost+'
@'+IntToStr(FPort)+'
)');
end
);
//FTCPClient.Connect;
while not Terminated
do begin
sleep(100);
self.Terminate;
if Terminated
then
begin
// FUpdateTimer.Enabled:=False;
break;
end;
end;
finally
Synchronize(
Procedure
begin
frm_main.ReleasePort(FBindPort);
end
);
FUpdateTimer.Free;
Synchronize(
Procedure
begin
frm_main.Writelog('
Thread beenden');
end
);
end;
end;
Was ist denn daran falsch? Ich erzeuge ihn....mach aber nix damit...und gebe ihn wieder frei.