Hab mir das beispiel kurz angeschaut.
irgendwie war mir das zu kompliziert
- nein ich mach so meine ersten versuche mit der thread klasse und irgendwie funktioniert eh alles ganz gut - ohne stress.
ich hab die jobliste anders gemacht - hab da auch spezielle anforderungen.
zum beispiel verwende ich einfach syncronize dafür und mach mir damit garkeinen stress.
Beispiel:
ich hab einen
indy udp client am laufen.
eine string var - in die ich immer den send string schreibe.
vom thread also:
synchronize ( fMain.GetNextMessage );
hier die procedure.
Delphi-Quellcode:
procedure TfMain.GetNextMessage;
begin
if (fMain.gsMessage.Items.Count > 0) then
begin
UdpThread.udpNextmsg := fMain.gsMessage.Items.Strings[0];
fMain.gsMessage.Items.Delete(0);
end
end;
udpNextmsg ist jetzt eine variable des threads deshalb hab ich die dann im thread zur verfügung
wenn ich etwas in die liste einfügen will ( in meinem fall hab ich die an erste stelle geschoben ):
Delphi-Quellcode:
procedure AddFirstgsMessage (s : string );
begin
fMain.gsMessage.Items.Insert(0,s);
end;
Bei mir funktioniert das sehr gut - wenn das absoluter blödsinn ist, dann mir bitte bitte mitteilen
inzwischen hab ich auch eine Frage.
der thread läuft in einer while schleife
Delphi-Quellcode:
while not (terminated) do
begin
bla bla
sleep(1);
end;
//// hier kommt jetzt der code den ich nach thread.terminate ausführen wollen würde.
der Thread wird schön beendet, aber der code nach der while schleife leider nie ausgeführt.
warum??
und welche destructor methode könnte ich verwenden?
lg
Arnulf