Bonjour,
J'ai un thread pour faire une vérification. Lors de de son exécution, je vérifie une valeur: si elle n'est pas la valeur que j'attends, l'application se referme(Application.Terminate). Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 type TUSBThread = class(TThread) protected procedure Execute; override; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var MonUSBThread : TUSBThread ; //THREAD -------------
Le bouton pour lancer ce Thread:
Procedure d'éxécution du thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.BitBtn1Click(Sender: TObject); begin MonUSBThread := TUSBThread.Create(True); MonUSBThread.FreeOnTerminate := True; MonUSBThread.Priority := tpNormal; MonUSBThread.Resume; end;
Le code s'exécute sans aucun soucis sauf dans la partie :
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
16
17
18
19
20
21
22 procedure TUSBThread.Execute; var FichierIni: Tinifile; MaValeur : String ; begin Form1.RefreshData; // Procedure personnelle Sleep(500); FichierIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+'.\MonFichier.ini'); MaValeur := (FichierIni.ReadString('Nom','Controle', '')); if NOT (MaValeur = 'xxxx') then begin MonUSBThread.Terminate; Application.terminate ; end; Fichierini.Free; end;
si "MaValeur" n'est pas égale à "xxxx " , alors l'application continue à tourner, elle ne se referme pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if NOT (MaValeur = 'xxxx') then begin MonUSBThread.Terminate; Application.terminate ; end;
Il y a sûrement une erreur de ma part.
Merci pour votre aide.
Bonne journée.
Partager