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) :
Dans la création de l'objet j'ai mis la propriété FreeOnTerminate := true
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;
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 :
et que je place ça dans :
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;
Je pense que ce n'est pas ça, mais je suis un peu perdu, d'où mon post
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;![]()
Merci d'avance pour vos réponse
Partager