Attente entre RUNTIME lancés en boucle !

darktonight Messages postés 51 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 23 juillet 2004 - 16 juin 2003 à 12:30
darktonight Messages postés 51 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 23 juillet 2004 - 16 juin 2003 à 14:36
Bonjour, et tout d'abord merci pour le temps passé à nous aider.

Je veux lancé plusieurs fois un logiciel (.exe) avec des paramétres differents.
Pour cela j'ultile les process avec les runtime tels quels :

public static void remplie(String USR,String PWD) throws IOException 
{ 
  
String[] FILE_NAME={"fichier1","fichier2",etc...}
        
        for(int i=0;i<FILE_NAME.length;i++)
        {
        lance(USR,PWD,FILE_NAME[i]);
        }
}      

public static void lance(String USR,String PWD,String FILE_NAME) 
{

String CALL1 ="chemin d'un exe avec des arguments dont le file_name"
String CALL2 ="chemin d'un exe avec d'autre arguments dotn le file_name"
  
try
{
Process process1 = Runtime.getRuntime().exec(CALL1); 
System.out.println(FILE_NAME+" Etape 1/2 \t");
Process process2 = Runtime.getRuntime().exec(CALL2); 
System.out.println(FILE_NAME+" Etape 2/2 \n");
  } 
catch (IOException e) 
{
 System.out.println("Impossible de lancer les requetes");
}

}


Mon problème est que cela me génére des erreurs car le logiciel est un générateur de fichier, et tant que les fichiers qu'il génére ne sont pas créér il ne peut en créér d'autre (en gros c'est pas un multithread).
Comment moi dois ej faire pour contourner ce problème, dois je mettre des sleep ou timer ou wait (je ne sais pas comment ca marche si vous pouvez m'expliquer, je crois qu'il ya un lien avec les threads mais j y connais rien).
Sinon y a t il un moyen de relancer ma fonction une fois que mes runtime ont été executés?
Tout autre points de vues ser ale bienvenue ;-)

MERCI D'AVANCE POUR VOTRE AIDE !!!!

1 réponse

darktonight Messages postés 51 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 23 juillet 2004 1
16 juin 2003 à 14:36
C'est bon j'ai trouvé ne cherchez pas.
Il siffisait de rajouter un waitFor() comme cela :

J'espere que ca aidera ceux qui auront le même problème que moi ;-)

> try
> {
> Process process1 = Runtime.getRuntime().exec(CALL1); 
process1.waitFor();
> System.out.println(FILE_NAME+" Etape 1/2 \t");
> Process process2 = Runtime.getRuntime().exec(CALL2); 
process1.waitFor();
> System.out.println(FILE_NAME+" Etape 2/2 \n");
>   } 
> catch (Exception e) //Mettre Exception et pas IOException
> {
>  System.out.println("Impossible de lancer les requetes");
> }
0
Rejoignez-nous