J'ai une appli qui instancie un objet, cet objet créer un thread.
Lorsque que je ferme mon appli le thread est détruit quelque soit son état.
J'aimerai bien qu'il se termine dans son coin indépendamment du reste
J'ai une appli qui instancie un objet, cet objet créer un thread.
Lorsque que je ferme mon appli le thread est détruit quelque soit son état.
J'aimerai bien qu'il se termine dans son coin indépendamment du reste
lors de la fermeture de l'appli. tu pourrais tester si le thread en question est terminé, non ?
Ben j'ai fait ça mais ça freeze mon prog
Destructor C_DocInterne.Destroy;
Begin
if Thread <> nil then
begin
Thread.Priority := tpHigher;
repeat
until Thread = nil
end;
inherited destroy;
end;
je ne suis pas un expert en thread mais je peux te filer l'adresse suivante:
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
peux-etre que tu connais déja ...
il y a plein d'explications avec schémas et exemples sur les threads.
c'est bien fait ( mais c'est en anglais bien sûr ! )
Pour arreter un thread il faut placer un test dans la boucle du thread :
Procedure ThreadEssai.Execute ; // boucle du trhead
begin
while not terminated do
begin
.......
end;
end;
Lorsque l'on veut arreter le thread on appele la méthode terminate
de l'objet thread :
.......
var : objThread : ThreadEssai ;
begin
........
objTread.terminate ; // demande d'arret du thread
........
end;
Cependant ceci arrete le thread et la variable thread se détruit mais
elle ne contient pas nil pour autant comme d'hab. sous Delphi
Pour detecter son arret il existe l'évenement onTerminate
Cordialement
AG
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager