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

EDT/SwingWorker Java Discussion :

Pb Timer et SwingWorker


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut Pb Timer et SwingWorker
    Bonjour à tous

    Dans mon appli, je réalise un Timer tous les secondes qui vérifie l'existence ou pas d'un dossier image. Si celui-ci n'existe pas, je lance un thread qui va créer ce dossier et faire une conversion de fichier PDF en plusieurs pages PNG

    Ce traitement etant assez long, le Timer se relance donc plusieurs fois

    Comment empecher le timer de se relancer si j'execute mon thread??

    voila les codes

    Appel du Timer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Ecouteurs sur le dossier racine
    timerEcouteDossierImage = TimerEcouteurDossierImage();
    timerEcouteDossierImage.start ();
    Timer :
    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
     
        /**
         * Timer d'écoute des dossiers Images
         * @return
         */
        private Timer TimerEcouteurDossierImage ()
        {
            ActionListener action = new ActionListener ()
            {
                public void actionPerformed (ActionEvent event)
                {
                    //Test si dossier image existe si non lancement de ThreadImage
                    String[] liste = ManagerPath.getListFichier();
                    for (int i = 0; i < liste.length; i++)
                    {
                        String dossier = ManagerPath.getNomDossier(liste[i]);
                        File fileDossier = new File(dossier);
                        //test si le dossier d'image existe
                        if(fileDossier.exists()) {  continue;   }
                        createImage = new ThreadImage(liste[i]);
                        createImage.execute();
                    }
                }
            };
            return new Timer (1000, action);
        }
    Thread de lancement de la capture
    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
     
    class ThreadImage extends SwingWorker<Object, Object>
    {
        private String fichier;
        public ThreadImage(String fichier)
        {
            this.fichier = fichier;
        }
     
        @Override
        protected Object doInBackground() throws Exception
        {   
            System.out.println("Debut de Capture : " + fichier);
            ManagerPDF.captureImage(fichier);
            System.out.println("Fin de Capture : " + fichier);
            return null;
        }
    }
    Comment arreter le timer lors du premier lancement et lorsque la capture est terminée le redémarrer??

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Passe une référence à ton timer et utilise les méthodes start (à la fin de ton doIbBackground) et stop (au début de ton actionPerformed).

  3. #3
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Merci pour ta reponse
    Je connaissais ces deux methodes mais ne les utiliser que dans le Timer. J'ai transmis la reference du timer au thread et j'ai pu redemarrer le timer seulement à la fin de mon thread

    Merci à toi
    Problème résolu comme toujours sur developpez

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire un Timer de fonction PORTABLE ?
    Par dieuP1guin dans le forum C
    Réponses: 3
    Dernier message: 04/07/2003, 11h44
  2. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 10/05/2003, 00h47
  3. [] [Réseau] Anti-timer, anti-idle
    Par clonevince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/01/2003, 23h19
  4. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 16h21
  5. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 01h59

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