FreeOnTerminate libération des variables
Bonjour,
j'en suis à mes débuts en Delphi, mais vraiment au tout début début, et je dois dire que là je sèche un peu.
Voilà le problème :
je dois faire une appli qui crée plusieurs threads; jusque là ça va, enfin je crois :mouarf: . Je récupère alors la création des threads dans une liste (FThreadList: TList) :
Code:
1 2 3 4
| for IName := 1 to FICountThreads do
begin
FThreadList.Add(TMyThread.Create(Mes_Parametres));
end; |
Dans la création de l'objet j'ai mis la propriété FreeOnTerminate := true
Ce qui implique donc que le thread libère l'espace mémoire dès que l'execution de celui-ci est terminé et qu'il ne sert donc à rien d'utiliser dans mon unit principale WaitFor et Free, seulement voilà, les éléments de la liste ne pointe pas vers nil.
j'ai lu qu'il fallait que je gère cela dans l'évènement OnTerminate mais je n'ai aucune idée sur la manière de le faire :oops: . Faut-il que je cré une procédure, par exemple :
Code:
1 2 3 4 5 6 7
| procedure TForm1.TerminerThread(Sender: TObject);
var
I: integer;
begin
for I := 1 to FICountThreads do
FThreadList.Items[I-1] := nil;
end; |
et que je place ça dans :
Code:
1 2 3 4 5
| for IName := 1 to FICountThreads do
begin
FThreadList.Add(TMyThread.Create(Mes_Parametres));
TMyThread(FThreadList.Items[IName-1]).OnTerminate := TerminerThread;
end; |
Je pense que ce n'est pas ça, mais je suis un peu perdu, d'où mon post :roll:
Merci d'avance pour vos réponse