IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

S'assurer de la fin d'un traitement avant de continuer


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Par défaut S'assurer de la fin d'un traitement avant de continuer
    Bonjour!

    J'ai une classe qui se charge de lancer sequqnetiellement les differents objets qui compose mon application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    import ....
     
    public class ManualInsert implements Job {
     
            public ManualInsert () {
     
        }
     
        public void execute(JobExecutionContext arg0) throws JobExecutionException {
            try {
     
    .......
     
         //   - 1 -  Lance une appliction externe qui prend du temps
                decryptFeeder decryptor = new decryptFeeder(sourceFolder);
     
                decryptor.decryptFiles(program, DECRYPT_COMMAND, into, forKey);
     
         // - 2 - pour chacun des fichiers crees au-dessus, faire un traitement
                for (int ind = 0; ind < BAIFolder.length; ind++) {
                    // Read args
                    String inputFileName = BAIFolder[ind];
     
                    // Constructor
                    TransformBAI transformer = new TransformBAI(BAIFolderName+inputFileName);
     
                    // Create the MT940 file
                    transformer.createMT940File(MT940OutputFolder);
     
                } // End for (int ind = 0; ind < BAIFolder.length; ind++)
            } catch (Exception e) {
                throw new JobExecutionException(e);
            }
        }
    }
    J'aurai souhaite qu'une fois le traitement effectue en - 1 - soit lance, le programme marque un temps d'attente afin que le traitement se finisse pour ensuite lancer - 2-.

    Quelques lignes de la classe decryptor:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         Process proc = null;     
         Runtime r = Runtime.getRuntime();
         proc = r.exec(program+FileToDecryptPath+into+txtFormat+forKey);
    Si j'ajoute la ligne int x = proc.waitFor(); pour lui demander d'attendre la fin de l'execution, il bloque indefiniment.

    Auriez-vous une idee ?
    Merci

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Il se peut que tu doives lire ce que le processus créé écrit sur la sortie standard. Pour cela crée un autre thread qui va consommer l'output stream du process.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Par défaut
    Merci pour ta reponse.

    Le processus n'ecrit pas sur la sortie standard, il se contente de modifier la structure des fichiers fournis en parametre, traitement qui une fois lance ne requiere plus d'intervention de l'utilisateur pour arriver a terme.

    J'ai regarde sur :
    http://java.sun.com/developer/JDCTec...03/tt0304.html

    pour des infos complementaires mais rien de nouveau si ce n'est qu'il utilise waitfor de la maniere suivante, que j'ai essaye sans resultat:
    if (proc.waitFor() != 0) {
    System.err.println("exit value = " +
    proc.exitValue());
    }

    N'y aurait-il pas une autre maniere de proceder ?

Discussions similaires

  1. [Toutes versions] Attendre la fin d'un traitement avant d'en commencer un autre
    Par nietzsche64 dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/12/2011, 09h11
  2. Réponses: 1
    Dernier message: 11/11/2011, 11h31
  3. [XL-2003] Attendre la fin d'un traitement
    Par hunteshiva dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2011, 22h22
  4. [PostgreSQL] Attendre la fin d'une requête avant de continuer le code
    Par renardchan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/06/2011, 10h55
  5. [PowerShell] Attendre la fin d'un process avant de continuer une boucle
    Par suchiwa dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 16/02/2011, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo