ok... diese Variante hatte ich wie gesgt schon. Allerdings nicht mit Sleep.
Ich geh dann mal zum probieren....bis gleich.
Soooo....
Delphi-Quellcode:
destructor Klasse1.Destroy; // Kommt auf das gleiche raus wie CloseQuery
var I: Integer;
begin
while not (FThreadList.Count = 0) do
begin
if Assigned((FThreadList.Items[0] as TXWebLoader)) then
begin
while FThreadList.Count > 0 do
begin
for I := FThreadList.Count - 1 to 0 do
begin
(FThreadList.Items[0] as TXWebLoader).Terminate;
// in XE ist Terminated als protected deklariert ! Geht schon mal nicht !
while not (FThreadList.Items[0] as TXWebLoader).Terminated do
begin
Sleep(200);
end;
end;
end;
FThreadList.Delete(I);
end;
end;
also Terminated auskommentiert.
Delphi-Quellcode:
destructor TXWeb.Destroy;
var I: Integer;
begin
while not (FThreadList.Count = 0) do
begin
if Assigned((FThreadList.Items[0] as TXWebLoader)) then
begin
while FThreadList.Count > 0 do
begin
for I := FThreadList.Count - 1 to 0 do
begin
(FThreadList.Items[0] as TXWebLoader).Terminate;
Sleep(200);
end;
end;
FThreadList.Delete(I);
end;
end;
bei beiden Varianten im Execute Sleep(100) eingefügt...
Ergebnis: Die Threads stehen wie eine eins und das Programm ist in einer Endlosschleife.