cs_jacques13
Messages postés252Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention29 juin 2013
-
14 févr. 2008 à 19:25
cs_jacques13
Messages postés252Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention29 juin 2013
-
15 févr. 2008 à 18:22
Bonjour,
J'ai un problème de synchronisation lors du retour d'un module extérieur.
J'explique:
A partir de mon programme principal, je fais appel à un module Trick:
RetVal = Shell(MyPath + "\Trick.exe " + PremiersParametres$, 0)
qui fait son traitement et, en fin d'exécution, repasse des paramètres au programme principal dans le fichier toto.txt
Pour tenter de synchroniser les opérations, j'introduis une boucle DoEvents centrée sur l'existence de toto.txt:
While Not Exist("toto.txt"): ret = DoEvents: Wend
Puis, au sortir de cette boucle, j'enchaîne le traitement de mon programme principal.
Malheureusement mon dispositif fonctionne de manière aléatoire, parfois il sort de la boucle et poursuit son exécution alors que le fichier toto.txt n'a pas encore été créé!!!
Quelqu'un verrait-il une solution?
Merci pour votre aide.
Jacques13
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 févr. 2008 à 21:17
Salut
Ton problème est normal puisque ton fichier peut exister sans pour autant avoir de données à l'intérieur (laps de temps court)
Oui, il faut utiliser l'API WaitForSingleObject qui, couplée à la commande Shell, bloquera ton programme pendant tout le temps où ton EXE externe est en cours de Run. Il ne te rendra la main qu'une fois que Trick aura disparu des process.
Voir des exemples parmi les questions du forum, pami les sources du site ou dans les exemples associés à cette API dans AIP-Guide (programme gratuit d'aide à l'utilisation des APIs) dispo à <cette adresse>
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)