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 . Je récupère alors la création des threads dans une liste (FThreadList: TList) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 . Faut-il que je cré une procédure, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

Merci d'avance pour vos réponse