Solange der Finalization-Abschnitt immer VOR dem der
Unit 'Classes' abgearbeitet wird, ist die Welt in Ordnung. Da viele Threads aber auch von anderen Units/Subsystemen abhängen, ist mir persönlich das nicht sicher genug. Wenn Du den Finalization-Code jedoch in einer exportierten Prozedur kapselst, kann der Anwender selbst bestimmen, wann die Threadliste aufgeräumt wird. Dann würde das doch richtig gut passen. Und wenn der Anwender vergisst, aufzuräumen, dann macht das eben dein Code... So etwa:
Delphi-Quellcode:
Unit CtrlThread;
...
Prozedure TerminateThreadList;
implementation
...
Procedure TerminateThreadList;
Begin
If Not Assigned (CtrlThreadList)
Then Exit;
KillAllThreads;
CS.Enter;
try
FreeAndNil(CtrlThreadList);
finally
CS.Leave;
try
CS.Free;
except
end;
end;
end;
finalization
TerminateThreadList;
end.