Yop, voilà ce que j'ai codé à ce jour :
Code :
- function TMaClasse.LancerProcessus: boolean;
- begin
- temps.TempsDebut := now;
- FfrmProcessing := TfrmProcessing.Create(nil);
- FfrmProcessing.Show;
- monThread.Th := CreateThread(nil, 0, @LeProcess, self, 0, monThread.Tid);
- WaitForSingleObject(monThread.Th, INFINITE);
- MessageBox(processHandle, 'fini', 'yes', 0);
- Result := true;
- end;
|
Ensuite, dans LeProcess, j'appelle régulièrement une méthode MAJInformation(), laquelle mets à jour les informations concernant l'état d'avancement du processus dans la fenêtre FfrmProcessing. Cependant, lors de la première exécution de cette méthode, tout se bloque dès que je modifie une propriété d'un composant de la fenêtre créée
Voilà un extrait de MAJInformation :
Code :
- procedure TMaClasse.MAJInformation;
- begin
- with FfrmProcessing do
- begin
- bar1.position := (EffectueGlobal * 100) div TotalGlobal;
- lblPourcentage.Caption := IntToStr(bar1.Position) + '%';
- bar2.position := (EffectueCourant * 100) div TotalCourant;
- end;
- end;
|
Quand la méthode est appelée dans LeProcess, tout se bloque à la ligne 5 de MAJInformation.
Cependant, tout fonctionne bien lorsque je n'utilise pas WaitForSingleObject mais dans ce cas, je ne sais pas comment savoir si ma fonction s'est terminée avec succès pour revenir enfin sur ma fiche principale.
Savez-vous à quoi est due cette erreur ?
Merci à vous
Message édité par Inekman le 08-09-2005 à 18:06:00