Einzelnen Beitrag anzeigen

Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#8

Re: TThread.Syncronize und critical section

  Alt 25. Feb 2007, 22:43
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
  Mit Zitat antworten Zitat