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 :

Blocage de l'application


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 299
    Par défaut Blocage de l'application
    Bonjour

    J'ai une boucle qui s'exécute 10000 fois. Comme c'est un peu long, je place un texte dans la statusbar indiquant la progression.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int y=0;y<10000;y++)
                {
                    statusbar.setText("position : "+(y+1)+" sur 10000");
                    fonction(y);
                }
    Manque de peau, l'application ne se met pas à jour. Il y a donc blocage puis au bout de 20 secondes, affichage de :
    position : 10000 sur 10000
    et déblocage.

    Je veux bien qu'une grosse fonction bloque une tâche, mais là, il y a bien des instructions intermédiaires entre les "fonction(y)"
    En Delphi, il y avait une fonction Application.processmessages() pour ne pas bloquer l'application. Apparemment, pas pour swing.

    J'utilise java version "1.6.0_07"

    Avez vous une idée pour que l'affichage soit correct ?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Pour rappel, on ne fait *pas* de calculs lourds dans le thread awt, çà le bloque. Voir http://gfx.developpez.com/tutoriel/j...ing-threading/

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 299
    Par défaut
    Merci. J'avais déjà lu cette page. Mais elle ne répond pas à ma question.

    Comme je l'ai indiqué, je n'ai pas "une" fonction lourde mais j'ai une fonction petite, répétée de nombreuses fois. La différence ? C'est que je peux intercaler des instructions qui peuvent s'exécuter à n'importe quel moment (choisi).

    Une autre idée ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    non mais, c'est pas comme çà que marche le thread AWT, il y en a 1 et il fait 1 traitement à la fois, si ta fonction est exécutée au sein d'un event awt (clic bouton, etc), elle va bloquer les autres event awt jusqu'à la fin de son process. On est en java, pas en delphi. Les solutions pour les process de calcul long sont proposé dans le lien mentionné. C'est pas bien dur de wrapper ton process dans un thread à part.

Discussions similaires

  1. Invoke - Blocage de l'application incompréhensible
    Par BestFF dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 16/07/2008, 13h39
  2. Blocage d'une application Console
    Par Pilloutou dans le forum C#
    Réponses: 5
    Dernier message: 08/04/2007, 20h43
  3. blocage de l'application avec javax.comm
    Par caloun62 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 19/03/2007, 20h59
  4. Blocage même avec Application.ProcessMessages
    Par Sub0 dans le forum Delphi
    Réponses: 7
    Dernier message: 31/01/2007, 06h13
  5. [WIN2000][JAVA]blocage de l'application
    Par narmataru dans le forum InterBase
    Réponses: 9
    Dernier message: 09/12/2003, 14h07

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