Thema: Delphi Einem Thread Zeit geben

Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Einem Thread Zeit geben

  Alt 8. Jun 2006, 19:47
Zitat von easywk:
Hi.

Wenn du das leeren und Befüllen eh schon mit einer Semaphore geschützt hast, kann du dir an der Stelle doch einen Merker setzen, dass geändert worden ist. Der Thread setzt diesen Merker zurück, wenn er anfängt zu arbeiten und fragt ihn vor jedem Schleifenzugriff ab. Sitzt der Merker wieder, schießt sich der Thread selber ab ...

Delphi-Quellcode:
procedure TXXXThread.Execute;
begin
   Geaendert:=FALSE;
   for i:=0 to liste.Count-1 do
   begin
      if Geaendert then Exit;
      BearbeiteListenElement(i);
   end;
end;
cu
easywk
So mach ich das jetzt, aber leider hab' ich da noch ein kleines Problem: Wenn ich das Programm beende, setze ich das Flag einfach präventiv im Destruktor des Objekts, das den Thread erstellt hat, so dass ein eventuell noch laufender Thread sich beenden kann. Leider bekommt aber der Thread wieder keine Chance, auf das Flag zu reagieren, weshalb mir FastMem am Ende ein Speicherleck um die Ohren haut. Damit bin ich wieder bei meinem Originalproblem.

Gruß
xaromz
  Mit Zitat antworten Zitat