Thread VCL ne s’exécute pas en simultané.
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:
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:
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. :)