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 :

Lancer 2 SwingWorker a 2s près


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 Lancer 2 SwingWorker a 2s près
    Bonjour je souhaite lance 2 swingWorker à 2s d'intervalle

    Voila comment je procède
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ThreadImage createImage = new ThreadImage(liste[i]);
    createImage.execute();
    try {
        Thread.sleep(2000);
    } catch (InterruptedException ex) {
        Logger.getLogger(FenetreAccueil.class.getName()).log(Level.SEVERE, null, ex);
    }
    ThreadTimer affichageVignette = new ThreadTimer(PAN_Colonne1, SCR_Scroll, liste[i]);                  
    affichageVignette.execute();
    Le resultat est que le premier thread se lance j'ai m'ai 2s d'attente et à la fin du premier thread le deuxième se lance

    Comment puis je faire pour arriver au resultat voulu ?

  2. #2
    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
    Personne n'a d'idée ?

    J'ai essayé avec un executorService mais cela n'a rien changé

  3. #3
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    A première vu il faut utiliser des invokateLater

  4. #4
    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 ivelios de me repondre comme toujours

    Je vais essayer de tester mais j'ai des soucis pour passer des references avec des invokeLater

  5. #5
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Tu devrais lire ça

    [HS]
    invokateLater
    Ha la faute que j'ai fais , impardonnable
    [/HS]

  6. #6
    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
    Bon je reviens apres mes tests

    Le fait d'utiliser invoke Later ne me convient pas car j'ai pas l'impression qui s'execute en parallele mais plutot quand rien ne s'execute.

    Le principe :

    Un timer Principal toutes les secondes qui vérifie si de nouveaux fichiers sont arrivés
    Si un nouveau fichier arrive (apres quelques verifications), lancement du 1er swingWorker pour la conversion en image PNG
    Après le debut du 1er swingWorker, lancement d'un timer un seul fois au bout de 2s
    Dans ce timer, Ajout d'une Vignette contenant la 1ere image generé par le 1er swingWorker
    Dans l'objet vignette lancement d'un 2eme swingWorker pour l'affichage de cette vignette

    Le resultat avec mon code
    Le premier swingWorker se lance, la vignette s'ajoute à mon appli mais avec un fond blanc. Quand le 1er swingWorker se termine, l'image s'affiche

    J'ai donc vraiment besoin d'executer 2 swingWorker pratiquement en meme temps

    Je poste mon code modifié
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    private Timer TimerEcouteurDossierImage ()
        {
            ActionListener action = new ActionListener()
            {
                public void actionPerformed (ActionEvent event)
                {
                    //Test si dossier image existe sinon 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;   }
                        //Test de validité du fichier
                        try
                        {
                            PdfReader reader = new PdfReader(liste[i]);
                            reader.getNumberOfPages();
                            reader.close();
                        }
                        catch (IOException e)
                        {
                            System.out.println("Ecouteur Dossier : Fichier en cours de chargement"); continue;
                        }
                        //Lancement du Thread Creation Image avec GhostScript
                        ThreadImage createImage = new ThreadImage(PAN_VueImage, SCR_Scroll,liste[i]);
                        createImage.execute();
                       //Lancement du timer puis du 2eme thread a partir du timer contenu dans l'objet vignette
                        timerAjoutImage = TimerAjoutImage(dossier);
                        timerAjoutImage.start ();
                    }
                }
            };
            return new Timer (1000, action);
        }
        private Timer TimerAjoutImage (final String dossier)
        {
            ActionListener action = new ActionListener()
            {
                public void actionPerformed (ActionEvent event)
                {
                    vignette = new Vignette(
                            (int) ((SCR_Scroll.getPreferredSize().width - 60) * 0.18),
                            (int) ((SCR_Scroll.getPreferredSize().height - 45) * 0.3),
                            dossier + "/1.png", new File(dossier).getName() +".pdf", LAB_Date,LAB_Heure, LAB_Poids, LAB_NbPage, LAB_NomFichier);
                    System.out.println(dossier + "/1.png");
                    PAN_VueImage.add(vignette);
                    PAN_VueImage.setPreferredSize(new Dimension(
                            PAN_VueImage.getPreferredSize().width,
                            ManagerPath.getHauteur()));
                    vignette.repaint();
                    PAN_VueImage.revalidate();
                    SCR_Scroll.revalidate();
                    timerAjoutImage.stop();
                }
            };
            return new Timer (2000, action);
        }
    Est ce possible d'executer 2 swingWorker en meme temps?

  7. #7
    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
    Apparemment ca n'inspire pas grand monde

    Personne n'a été confronté à ce genre de problème??

    Je suis preneur de tout idée

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    De souvenir un SwingWorker possède un pool de Threads. De fait comment as tu définit ton ExecutorService?

  9. #9
    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 de me repondre Sinok

    Je commencais à desesperer

    J'avais lu sur un autre post dans ce même forum quelqu'un qui conseillé d'utiliser un ExecutorService mais j'ai essayé sans succès

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                        ThreadImage thread1 = new ThreadImage();
                        ThreadAffichageImage thread2 = new ThreadAffichageImage();
                        ExecutorService threadPool = Executors.newSingleThreadExecutor();
                        threadPool.submit(thread1);
                        threadPool.submit(thread2); 
                        threadPool.shutdown();
    Voila en gros le code que j'avais testé

    J'avoue etre perdu sur l'utilisation de plusieurs swingWorker en même temps
    Il ya surement quelque chose que j'ai oublié mais quoi

    J'utilise actuellement le code que j'ai posté le 24/09

    Mon premier de conversion en PNG se lance et s'effectue normalement je lance un Timer qui au bout de 3s (le temps que le 1er thread crée le PNG de la 1ere image) ajoute une vignette mais l'image de ma vignette ne s'affiche que à la fin du 1er thread. J'utilise un swingworker pour afficher mon image

    Le code sera plus parlant pour l'ajout d'image

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    public class Vignette extends JPanel implements MouseListener
    {
        private int width, height;
        private String image, nom;
        static private Vignette VIG_Precedente = null;
        static private String nomStatic = null;
        private JPanel conteneur, PAN_Gauche, PAN_Droit, PAN_Nom;
        private JLabel LAB_NomFichier;
        private JLabel LAB_DateAccueil, LAB_HeureAccueil, LAB_PoidsAccueil, LAB_NbPageAccueil, LAB_NomFichierAccueil;
        private String date, heure, poids, nbPage;
     
        public Vignette(int width, int height, String image, String nom, JLabel LAB_DateAccueil, JLabel LAB_HeureAccueil,
                JLabel LAB_PoidsAccueil, JLabel LAB_NbPageAccueil, JLabel LAB_NomFichierAccueil)
        {
            this.width = width; this.height = height;
            this.image = image; this.nom = nom;
            this.LAB_DateAccueil = LAB_DateAccueil;
            this.LAB_HeureAccueil = LAB_HeureAccueil;
            this.LAB_PoidsAccueil = LAB_PoidsAccueil;
            this.LAB_NbPageAccueil = LAB_NbPageAccueil;
            this.LAB_NomFichierAccueil = LAB_NomFichierAccueil;
     
            //Recuperation des informations
            SwingWorker t = new SwingWorker()
            {
                @Override
                protected Object doInBackground() 
                {
                    getInformations();
                    return null;
                }
            };
            t.execute();
     
            //Conteneur
            conteneur = new JPanel();
            conteneur.addMouseListener(this);
            conteneur.setBackground(Color.white);
            conteneur.setLayout(new BorderLayout(0, 0));
            add(conteneur);
     
            //Affichage image au centre
            ThreadAffichageImage affichageImage = new ThreadAffichageImage(conteneur, this.width, this.height, this.image);
            affichageImage.execute();
     
            //Conteneur Gauche
            PAN_Gauche = new JPanel();
            PAN_Gauche.setBackground(new Color(0x3c3c3e));
            PAN_Gauche.setPreferredSize(new Dimension(
                    (int) (this.width * 0.2),
                    (int) (this.height * 0.85)));
            conteneur.add(PAN_Gauche, BorderLayout.WEST);
            //Conteneur Droit
            PAN_Droit = new JPanel();
            PAN_Droit.setBackground(new Color(0x3c3c3e));
            PAN_Droit.setPreferredSize(new Dimension(
                    (int) (this.width * 0.2),
                    (int) (this.height * 0.85)));
            conteneur.add(PAN_Droit, BorderLayout.EAST);
     
            //Conteneur Nom Fichier
            PAN_Nom = new JPanel();
            PAN_Nom.setPreferredSize(new Dimension(
                    this.width,
                    (int) (this.height * 0.15)));
            conteneur.add(PAN_Nom, BorderLayout.SOUTH); PAN_Nom.setLayout(new BorderLayout());
            //Fichier
            LAB_NomFichier = new JLabel(this.nom);
            LAB_NomFichier.setPreferredSize(new Dimension(
                    PAN_Nom.getPreferredSize().width,
                    PAN_Nom.getPreferredSize().height));
            LAB_NomFichier.setOpaque(true);
            LAB_NomFichier.setFont(new Font("Serif", Font.BOLD, PAN_Nom.getPreferredSize().height /2));
            LAB_NomFichier.setBackground(new Color(0xd86a2d));
            LAB_NomFichier.setForeground(Color.white);
            LAB_NomFichier.setHorizontalAlignment(SwingConstants.CENTER);
            LAB_NomFichier.setVerticalAlignment(SwingConstants.CENTER);
            PAN_Nom.add(LAB_NomFichier);        
        }
    Merci

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah le truc c'est que tu crées ton ExecutorService en appelant la méthode newSingleThreadPool.

    Méthode qui fait exactement ce que raconte son nom, elle crée un Pool contenant un unique Thread.

    Je te conseille plutôt de créer un pool un peu plus large en passant par la méthode newFixedThreadPool(int n) qui te permet de spécifier le nombre de Thread contenus dans le pool utilisé par les instances de SwingWorker.

  11. #11
    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
    tu es le meilleur. Ca fonctionne

    Je mets le code que j'ai réalisé

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
        private Timer timerEcouteDossierImage, timerAjoutImage;
        private ExecutorService pool = Executors.newFixedThreadPool(5);
    
        public FenetreAccueil()
        {
    ...
            //Ecouteur sur le dossier racine
            timerEcouteDossierImage = TimerEcouteurDossierImage();
            timerEcouteDossierImage.start ();
    ...
         }
        private Timer TimerEcouteurDossierImage ()
        {
            ActionListener action = new ActionListener()
            {
                public void actionPerformed (ActionEvent event)
                {
                    //Test si dossier image existe sinon 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;   }
                        //Test de validité du fichier
                        try
                        {
                            PdfReader reader = new PdfReader(liste[i]);
                            reader.getNumberOfPages();
                            reader.close();
                        }
                        catch (IOException e)
                        {
                            System.out.println("Ecouteur Dossier : Fichier en cours de chargement"); continue;
                        }
                        
                        //Lancement du Thread Creation Image avec GhostScript
                        ThreadImage createImage = new ThreadImage(liste[i]);
                        //createImage.execute();
                        pool.submit(createImage);
                        //Lancement du timer puis du 2eme thread a partir du timer contenu dans l'objet vignette
                        timerAjoutImage = TimerAjoutImage(dossier);
                        timerAjoutImage.setInitialDelay(3000);
                        timerAjoutImage.setRepeats(false);
                        timerAjoutImage.start();
                        
                    }
                }
            };
            return new Timer (1000, action);
        }
        private Timer TimerAjoutImage (final String dossier)
        {
            ActionListener action = new ActionListener()
            {
                public void actionPerformed (ActionEvent event)
                {
                    //Nombre de ligne pour le tableau avec ajout vignette
                    int num = PAN_Vignette.length + 1;
                    Vignette[] PAN_Vignette2 = new Vignette[num];
                    //Copie de l'ancien tableau dans le nouveau tableau
                    System.arraycopy(PAN_Vignette, 0, PAN_Vignette2, 0, PAN_Vignette2.length - 1);
                    //Ajout de la nouvelle vignette    
                    PAN_Vignette2[num - 1] = new Vignette(
                            (int) (SCR_Scroll.getPreferredSize().width * 0.16),
                            (int) (SCR_Scroll.getPreferredSize().height * 0.26),
                            dossier + "/1.png", new File(dossier).getName() +".pdf",
                            LAB_Date,LAB_Heure, LAB_Poids, LAB_NbPage, LAB_NomFichier,pool);
                    PAN_VueImage.add(PAN_Vignette2[num - 1]);
                    PAN_VueImage.setPreferredSize(new Dimension(
                            PAN_VueImage.getPreferredSize().width,
                            ManagerPath.getHauteur()));
                    PAN_Vignette2[num - 1].repaint();
                    PAN_VueImage.revalidate();
                    SCR_Scroll.revalidate();
                    //Affectation du nouveau tableau dans l'ancien tableau
                    PAN_Vignette = new Vignette[num];
                    PAN_Vignette = PAN_Vignette2;
                }
            };
            return new Timer (3000, action);
        }
    }
    et ma classe Vignette
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    public class Vignette extends JPanel implements MouseListener
    {
        private int width, height;
        private String image, nom;
        static private Vignette VIG_Precedente = null;
        static private String nomStatic = null;
        private JPanel conteneur, PAN_Gauche, PAN_Droit, PAN_Nom;
        private JLabel LAB_NomFichier;
        private JLabel LAB_DateAccueil, LAB_HeureAccueil, LAB_PoidsAccueil, LAB_NbPageAccueil, LAB_NomFichierAccueil;
        private String date, heure, poids, nbPage;
        private ExecutorService pool;
     
        public Vignette(int width, int height, String image, String nom, JLabel LAB_DateAccueil, JLabel LAB_HeureAccueil,
                JLabel LAB_PoidsAccueil, JLabel LAB_NbPageAccueil, JLabel LAB_NomFichierAccueil, ExecutorService pool)
        {
            this.width = width; this.height = height;
            this.image = image; this.nom = nom;
            this.LAB_DateAccueil = LAB_DateAccueil;
            this.LAB_HeureAccueil = LAB_HeureAccueil;
            this.LAB_PoidsAccueil = LAB_PoidsAccueil;
            this.LAB_NbPageAccueil = LAB_NbPageAccueil;
            this.LAB_NomFichierAccueil = LAB_NomFichierAccueil;
    /*
            //Recuperation des informations
            SwingWorker t = new SwingWorker()
            {
                @Override
                protected Object doInBackground() 
                {
                    getInformations();
                    return null;
                }
            };
            t.execute();
       */
            //Conteneur
            conteneur = new JPanel();
            conteneur.addMouseListener(this);
            conteneur.setBackground(Color.white);
            conteneur.setLayout(new BorderLayout(0, 0));
            add(conteneur);
     
            ThreadAffichageImage affichageImage = new ThreadAffichageImage(conteneur, this.width, this.height, this.image);
            //affichageImage.execute();
            pool.submit(affichageImage);
     
            //Conteneur Gauche
            PAN_Gauche = new JPanel();
            PAN_Gauche.setBackground(new Color(0x3c3c3e));
            PAN_Gauche.setPreferredSize(new Dimension(
                    (int) (this.width * 0.2),
                    (int) (this.height * 0.85)));
            conteneur.add(PAN_Gauche, BorderLayout.WEST);
            //Conteneur Droit
            PAN_Droit = new JPanel();
            PAN_Droit.setBackground(new Color(0x3c3c3e));
            PAN_Droit.setPreferredSize(new Dimension(
                    (int) (this.width * 0.2),
                    (int) (this.height * 0.85)));
            conteneur.add(PAN_Droit, BorderLayout.EAST);
     
            //Conteneur Nom Fichier
            PAN_Nom = new JPanel();
            PAN_Nom.setPreferredSize(new Dimension(
                    this.width,
                    (int) (this.height * 0.15)));
            conteneur.add(PAN_Nom, BorderLayout.SOUTH); PAN_Nom.setLayout(new BorderLayout());
            //Fichier
            LAB_NomFichier = new JLabel(this.nom);
            LAB_NomFichier.setPreferredSize(new Dimension(
                    PAN_Nom.getPreferredSize().width,
                    PAN_Nom.getPreferredSize().height));
            LAB_NomFichier.setOpaque(true);
            LAB_NomFichier.setFont(new Font("Serif", Font.BOLD, PAN_Nom.getPreferredSize().height /2));
            LAB_NomFichier.setBackground(new Color(0xd86a2d));
            LAB_NomFichier.setForeground(Color.white);
            LAB_NomFichier.setHorizontalAlignment(SwingConstants.CENTER);
            LAB_NomFichier.setVerticalAlignment(SwingConstants.CENTER);
            PAN_Nom.add(LAB_NomFichier);        
        }
    J'ai crée une variable pool dans ma classe principale que je transmet à ma classe vignette.
    Par contre ou dois je mettre le pool.shutdown pour fermer proprement le pool?

  12. #12
    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 encore

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/07/2010, 12h17
  2. [VB6] Lancer un service, par exemple Sql Server
    Par fea dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 14h07
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 09h39
  5. Réponses: 8
    Dernier message: 05/06/2002, 11h55

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