Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Threads "korrekt" beenden

  Alt 31. Jan 2009, 07:27
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat