Bonjour !
J'ai une petit soucis avec mon Thread dans delphi. J'ai crée une classe TThread mais quand je lance mon thread, le code principale s’exécute et mon thread après ou vice-versa si je joue sur la priorité.
Ma classe :
Et ailleurs dans mon code :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 unit ThreadProgress; interface uses Classes, SysUtils, Windows; type MyThread = class(TThread) private { Déclarations privées } protected procedure Execute; override; procedure UpdateForm; public pos : Integer; end; implementation uses U_ConnectSHIELD; procedure MyThread.Execute; var i : Integer; begin For i:=0 to 100 do begin Inc(pos); Synchronize(UpdateForm); Sleep(200); end; end; procedure MyThread.UpdateForm; begin FormConnectSHIELD.PB_Wait.Position := pos; end; end.
Donc ici, la fonction "RecupNbCapteur()" va communiquer avec plein de capteur. La fonction prend un peu de temps donc je fais une ProgressBar qui se met à jour (enfin ce que je ferai plus tard).
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 // Lancer la com et la recherche else if(gSerialCom.Connected = False) then begin InitCom(); BitBtn1.Caption := 'Terminer'; ThreadProgress := MyThread.Create(True); ThreadProgress.Priority := tpNormal; ThreadProgress.Resume; L_nbShield1.Caption := IntToStr(RecupNbCapteur('Optique')); L_nbShield2.Caption := IntToStr(RecupNbCapteur('Relais')); L_nbShield3.Caption := IntToStr(RecupNbCapteur('Temperature')); end;
Avez vous une idée ?
Merci pour votre aide.
Partager