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 :
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.
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
 
     // 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;
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).

Avez vous une idée ?

Merci pour votre aide.