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

SWT/JFace Java Discussion :

MouseEvent bloquant les thread (appli RCP )


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 5
    Par défaut MouseEvent bloquant les thread (appli RCP )
    Bonjour à tous!


    Je developpe une appli basée sur RCP, utilisant plusieurs Thread, dont un de communication avec un serveur via la classe Socket.
    Dans l'IHM, (dans une ViewPart), je positionne un objet Button sur lequel j'ajoute un mouseListener

    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
     
    MaClass extends ViewPart{
     
    	public void createPartControl(Composite parent) {
     
    		monBoutton.addMouseListener(new MouseListener() {
    			public void mouseDoubleClick(MouseEvent e) {}
    			public void mouseDown(MouseEvent e) {					
    				if (condition) {
    				//du code appelant des classes de service	
    				}											
    	}
    			public void mouseUp(MouseEvent e) {}
    		});
     
    	}
    }
    Le probleme : j'ai une trace dans mon Thread de communication qui m'indique bien que chaque seconde on recoit un message du serveur (qui envoie une information de relevé d'un capteur en gros).
    Du moment ou je rentre dans le mouseEvent, lancé par l'IHM et donc le main thread, le thread de communication arrete de s'éxécuter, comme s'il etait "asleep", alors que son état est toujours marqué comme Running en debug.

    J'ai donc l'impression que la méthode gérant l'Event interrompt l'éxécution de tous les autres thread, comme si le thread Main de rendez plus la main aux autres thread, les freezant dans l'instant, le temps du traitement de l'event.

    Le probleme est que cet event utilise le thread de communication pour effectuer une action sur le serveur. Ce thread etant "freezé", la séquence de code du mouseEvent ne peut pas s'achever, bloquant l'application de facon immédiate.

    J'insiste bien sur le fait que cela ne peut pas venir de mon code : dès l'event lancé et à la premiere ligne de code (au niveau du IF), je vois grace aux traces du thread de communication que celui ci est déjà interrompu.

    Comment faire pour que le "roulement" entre les thread continue durant la gestion de l'event, afin que le thread de com continue son travail, permettant ainsi l'achevement de la gestion de l'event?

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 5
    Par défaut
    Bon...

    Je m'auto reply après avoir trouvé la réponse (6h de recherche entrecoupé d'une nuit....)

    Mon thread de communication recoit chaque instant un relevé du capteur. Pendant la phase de dev, je fais ecrire dans une ViewPart le relevé pris sur le capteur.

    Comme on le sait tous : SWT est threadSafe, et il faut faire un Runnable que lance le display, ce que j'avais fait pour faire du "append" dans la vue de logs.
    L'appel de ce runnable sur le display etait fait avec un synchExec, engendrant une "etreinte mortele" : le display attendait après le thread de communication pour terminer la gestion de son event et le thread de comm attendait la libération du display pour afficher la trace de log....

    Probleme résolu en lancant a partir du thread de com un display.asynchExec au lieu de synchExec(monRunnableQuiAfficheLeMessage)



    Merci à ceux qui ont quand meme lu le message ^_^

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

Discussions similaires

  1. Les Threads... J'en remet une couche :)
    Par Higestromm dans le forum C++
    Réponses: 5
    Dernier message: 17/11/2004, 12h19
  2. [API] Communication série NON-bloquante : OVERLAPPED/Thread
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/11/2003, 13h43
  3. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25
  4. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59

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