Forum: Object-Pascal / Delphi-Language
by Captnemo,
20. Jun 2014
LOL Thread=Thread :-D:-D Nein, ist okay. Mach ich.
Edit: Aber möglichweise ist dein Beitrag in beiderlei Hinsicht hilfreich :-)
Forum: Object-Pascal / Delphi-Language
by Captnemo,
20. Jun 2014
Das sollte doch eigentlich Threadsafe bedeuten.
Ich habe jetzt den TJvThreadTimer an Stelle des TTimer verwendet und Schwupps....alles Prima.
Ich arbeite noch nicht lange mit Threads, bzw. hatte früher nie die Notwendigkeit. Doch nun geht es nicht anders, und ich stelle langsam fest wie wichtig es ist Threadsafe zu arbeiten. Das Prinzip ist schon klar, doch bei der Umsetzung tappt man doch...
Forum: Object-Pascal / Delphi-Language
by Captnemo,
20. Jun 2014
Meines Wissens wir bei einem Exit die Procedure/Function verlassen, während ein Break nur die Schleife (for, while, Loop) verläßt.
Hilfeauszug:
Exit:
Break:
Forum: Object-Pascal / Delphi-Language
by Captnemo,
20. Jun 2014
Hab grad den Test umgekehrt gemacht. Nur TTimer weglassen, schon läuft mein Thread ohne Fehler und Probleme.
Nur was jetzt? TTimer im TThread...müßte doch gehen.
Forum: Object-Pascal / Delphi-Language
by Captnemo,
20. Jun 2014
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...
Forum: Object-Pascal / Delphi-Language
by Captnemo,
19. Jun 2014
Sorry, Ownobjects ist natürlich auf True. Hatte mich vertippt.
Forum: Object-Pascal / Delphi-Language
by Captnemo,
19. Jun 2014
Okay, das mit den madexcept läuft jetzt. Ich habe eine bugreport, aus dem ich selbst leider nicht so viel herauslesen kann. Ich häng den mal an Anhang dran, vielleicht kann jemand etwas daraus erkennen.
Wenn ich dann in der madException auf Continue Application klicke, läuft meine Anwendung scheinbar weiter, bis ich der Mainform mal wieder den Focux spendiere.
Forum: Object-Pascal / Delphi-Language
by Captnemo,
19. Jun 2014
Ich habe jetzt OwnObjects:=False und lösche das Object jetzt selber. Das Free hab ich rausgenommen und so funktioniert es jetzt auch.
Aber mein Ursprüngliches Problem ist noch da und das mit dem madexcept will auch nicht funktionieren (Wär ich heut bloß im Bett geblieben)
Forum: Object-Pascal / Delphi-Language
by Captnemo,
19. Jun 2014
Also ich habe mir jetzt im Thread im OnTerminate per PostMessage eine Message an den Hauptthread schicken lassen.
Dann rufe ich folgende Procedure auf
Writelog('Message TCPComThreadEnded empfangen');
for I := ComThreadList.Count-1 downto 0 do
begin
if TTCPThread(ComThreadList).Finished then
begin
Writelog('FreeAnNil TCPComThread');
Forum: Object-Pascal / Delphi-Language
by Captnemo,
19. Jun 2014
Ja, ist von ICS. Das mit Multithreaded hatte ich schon gefunden und verwende das auch. Das war auch mein erste Gedanke, da ich da eine Zusammenhang vermutete.
Grundsätzlich gehe ich aber mal davon aus, dass eher ich einen Fehler mache als Francois Piette :)
Forum: Object-Pascal / Delphi-Language
by Captnemo,
19. Jun 2014
Okay, das habe ich verstanden. Das durchsehen der ObjectList muß ich ja irgendwie anstoßen. Finished wir ja sicherlich erst gesetzt, wenn die Execute-Methode verlassen wurde. Demnach macht es keinen Sinn darin per PostMessage das in die Wege zu leiten.
Aber einen Timer dafür erscheint mir auch nicht unbedingt sinnvoll, zu mal der (zumindest in meinem Fall) dann x-mal die Liste durchsieht, und...