Comment recréer mon probleme
1. Créer une thread du genre
2. Procedure execute et update
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TCpuThread= class(Tthread) count:integer; procedure execute;override;
3. Créer la thread , par exemple dans le onclick d'un bouton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TCpuThread.execute; while not CpuThread.Terminated do begin inc(count); if count mod 5000=0 then synchronize(update); end; end; procedure TCpuThread.update; begin form1.Caption:=inttostr(count); end;
4. Maintenant voici le problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CpuThread:=tcputhread.create(false);
Appuyez sur le bouton "X" de fermeture de la forme sans relâcher pour ne pas la fermer. Vous observez que la thread est carrément plus éxécutée. Même résultat si vous cliquez sur le X d'une autre forme du programme. Lorsque vous annulez la fermeture de la fenêtre (en déplacant le curseur et relâchant le bouton) la thread reprend là ou elle s'était arrêtée.
Comment éviter ce problème ?
J'imagine que c'est tout bête et que je manque qqchose d'évident.
Partager