Bug WaitForSingleObject

Résolu
cs_barrique
Messages postés
13
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
7 mai 2018
- 30 nov. 2007 à 15:53
cs_barrique
Messages postés
13
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
7 mai 2018
- 4 déc. 2007 à 09:29
Bonjour,

Je vous écrit car j'ai un petit problème avec l'instruction WaitForSingleObject.
J'ai un programme delphi qui permet l'installation de plusieurs mises à jour, j'ai donc utiliser WaitForSingleObject pour attendre la fin de la dernière mises à jour pour lancer la suivante.
Le problème est que mon code fonctionne très bien lorsque je le teste sur mon disque dur ou sur le réseau, par contre une fois qu'il est gravé sur un cd cela ne fonctionne plus du tout : les mises à jour se lancent toutes en mêmes temps ...
Je ne comprend pas pourquoi cela fonctionne très bien en local et pas sur le cd

Merci pour vos réponses

Voici le code utilisé

function LanceAppliAttenteFin(NomFichier:string; var ExitCode: DWORD):boolean ;
var
  StartInfo        : TStartupInfo;
  ProcessInfo            : TProcessInformation;
begin
  result:=true;
  ZeroMemory(@StartInfo, sizeof(StartInfo));
  StartInfo.cb:=sizeof(StartInfo);
  if CreateProcess(nil,PChar(NomFichier),nil,nil,true,0,nil,nil,StartInfo,ProcessInfo)  then
  begin
       Windows.WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
       Windows.GetExitCodeProcess(ProcessInfo.hProcess,ExitCode);
  end
  else result:=false;
end;
A voir également:

6 réponses

cs_barrique
Messages postés
13
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
7 mai 2018

4 déc. 2007 à 09:29
Bonjour,

J'ai pris note des remarques que j'ai apporté dans ma fonction.
Par contre, je viens d'avoir l'explication de mon problème : je me servais de cette fonction pour lancer un installeur, or lorsque cet installeur est situé sur un support amovible, il se copie sur le disque dur, laisse la main, et s'exécute ensuite. Donc la fonction me disait que tout était terminé alors que l'exécutable du disque dur était toujours en cours.
C'est pour cela aussi que cela fonctionnait correctement à partir du lecteur réseau.

Merci pour votre aide
3