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

Java Discussion :

SwingWorker.doInBackground() n'accomplit pas sa tache


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 71
    Par défaut SwingWorker.doInBackground() n'accomplit pas sa tache
    bonsoir tout le monde
    j'ai utilisé la classe swindworker dans mon programme pour faire un calcule (très lent) qui s'exécute en arrière plant ,donc voila
    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
     
    public class MODUL  {
    MODUL()
    {
    //const
    }
     class calcul extends SwingWorker<Void,Void>
        {
     public Void doInBackground() 
    {
    //un calcul lent 
    // model.Adds(resulatat); afficher le resultat dans une JTable 
     
    }
     public void done()
        {
    //signal de la fin
       }
     
     }
    // MyModel extends AbstractTableModel
    calcul exec=null;
    public void excute(MyModel model)
      {
    this.model=model;
    calcul exec=new calcul();
     exec.execute();
    }
     
    }
    pour lancer le calcule il suffit de clicker sur un JButton,on peut lancer le calcule plusieurs fois a condition que l'ancien est fini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class IHM
    {  
    MODUL TF=new MODUL();
    Button.addActionListener
    {
    TF.excute(model);
    }
    }
    le problème:
    des fois la méthode doInBackground() n'accomplir pas sont travaille(peut etre une interruption ) et la méthode done() me signal la fin de calcule
    est-ce-que quelqu'un peut m'aider pour sortir de cette situation ,j'ai pensé que il y a une exception que je n'arrive pas a catché (peut etre )
    merci

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faut appeler get() dans done() pour récupérer le résultat ou l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void done() {
        try {
            Object result = get();
            // si on arrive ici c'est que TOUT s'est bien passé
        } catch (ExecutionException e) {
               // Une exception est survenu pendant doInBackground() :
               e.printStackTrace();
        }
    }
    a++

Discussions similaires

  1. [MySQL] "Moulinette" mise à jour des données( qui ne fait pas la tache demandée)
    Par jmtrivia dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 04/03/2014, 16h58
  2. Erreur : Pas de tache For
    Par eclesia dans le forum ANT
    Réponses: 1
    Dernier message: 02/07/2009, 01h54
  3. [SwingWorker] doInBackground() récursif = threads résiduels ?
    Par chrisRg2r dans le forum EDT/SwingWorker
    Réponses: 6
    Dernier message: 17/09/2008, 17h53
  4. Icone dans barre taches napparait pas tjr(lancement session)
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/06/2004, 10h51
  5. Réponses: 8
    Dernier message: 08/05/2004, 13h58

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