EXÉCUTION D'UN PROGRAMME ET ATTENDRE LA FIN DE L'EXÉCUTION DE FAÇON NON BLOQUANT

cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 - 20 janv. 2006 à 15:07
spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 - 23 oct. 2006 à 17:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35669-execution-d-un-programme-et-attendre-la-fin-de-l-execution-de-facon-non-bloquante

spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 1
23 oct. 2006 à 17:32
C'est bien dans l'ensemble mais pour les constantes, tu pourrais utiliser une énumération.
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 janv. 2006 à 20:40
Message de test (suite à ta demande aux admins)
Tu me diras si tu en as été averti.
Depuis 15h, le serveur de mail surchauffe, alors il est possible que le mail qui averti t'arrive ... mais un peu plus tard.
Confirme moi, stp, par message privé.
Jack
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 janv. 2006 à 17:14
Excellente suggestion Proger, Merci

Le Sleep 1 Fonctionne parfaitement sans surcharger le processeur

En plus j'avais oublier de préciser le thread sur lequel faire le sleep

Je modifie le code en conséquence
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 janv. 2006 à 17:08
Merci, je vai tester

J'ai besoins de l'équivalent :
Shell Fichier,wait:=true

Sans bloquer l'appli

pour que mon prog attende la fin de l'exécution, tout en conservant l'interface active

c'est pour ça que j'ai du mal à réaliser ça avec le callback car le callback semble terminer la procedure en cours sans attendre la fin de l'exécution
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
23 janv. 2006 à 16:45
perso j'ai surtout besoin de l'évenementielle (callback), mais si c'est pas ton cas...
Mets-donc sleep(1) au lieu de 100 ! :)
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 janv. 2006 à 15:18
J'ai rajouté le sleep pour éviter de surcharger le processeur mais ce n'est pas une bonne solution car cela ralenti toues les autres applications

La gestion événementielle n'est pas non-plus une bonne solution car elle ne répond pas à mes attentes puisqu'elle termnie l'exécution de mon programme avant la fin de l'exécution du process

Donc finallement, à moins qu'il y ait d'autres propositions, ma solution de départ (sans le sleep) est préférable
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 janv. 2006 à 12:02
Merci nicolas99,

ça à l'air pas mal du tout je vai tester

Seul hic : c'est une gestion événementielle, hors ce qui m'intéresse c'est la continuité...

Je pense qu'il me faudra tout de même une boucle d'attente que le p.Exited est eu lieu
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 janv. 2006 à 10:15
Oups j'avais pas vu le code renfield, désolé

Je reconnais alicvb que je n'ai pas besoins du shellexecute mais je l'ai laissé car je suis en cours de modif et j'ai posté le source en l'état pour une amélioration plus rapide grace à vos critiques.

Au départ, je n'utilisait que le shellexecute mais je n'avais pas le wait, et le wait du shell bloquait toute l'appli donc j'ai eu l'idée d'essayé ça (sans connaitre le source de renfield)

Si on pouvait m'adier un peu sur le callback et les autres améliorations, je suis tout ouï (à l'aide d'exemples si possible...)

Merci à vous tous pour vos commentaires
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 janv. 2006 à 09:22
Bonjour,
Comment tu fais le callback ?
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
22 janv. 2006 à 00:29
Mouais, le "sans figer le programme" n'est qu'un doevents dans une boucle do-loop. ca mange méchant le cpu :(
l'idéal serai un callback, ou un second thread qui fait cette boucle, ou un timer qui vérifie l'etat tout les 10 millisecs...
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
21 janv. 2006 à 18:51
Euh, juste une chose : il me semble que pour lancer un fichier avec son programme par defaut, il suffit de ne remplir que la propriété Filename du StartInfo (avec le chemin du fichier) et de le lancer... De même pour ouvrir un dossier.

C'est plus simple et ça évite même les API...

En tout cas, ça marche chez moi !

AlicVB
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
20 janv. 2006 à 18:57
en gros tu develloppes ce que fait le : System.Diagnostics.Process.Start()

il me semble
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
20 janv. 2006 à 17:41
http://www.vbfrance.com/code.aspx?ID=34867

Ci-dessus une source postée par Renfield il y a pas bien longtemps dans la categorie VB6 mais c'est la même chose en .NET

Elle permet également de faire la même chose, mais gère également les fichiers. C'est à dire Ouvrir un fichier avec le programme qui lui associé et attendre que celui-ci soit fermé.
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
20 janv. 2006 à 15:07
J'attends vos critiques
Rejoignez-nous