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

AWT/Swing Java Discussion :

Probleme de thread : application reste figé


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut Probleme de thread : application reste figé
    salut a tous,

    J'ai une application client-serveur où le cilent lorsqu'il demande le serveur peut rester en attente pendant une certaine durée (quelques secondes voir plus). Et donc j'ai mis le code de l'appel du serveru dans un thread a part. Mon problème c'est que en faisant cela l'application reste figé. Je pense a un problème dans mon code : le 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
    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
     
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtCopyActionPerformed
     
    		int selected = jTable2.getSelectedRowCount();
     
     
     
     
    //		for (int i=0; i<selected ; i++)
    //		{
    //		
    //		}
     
    		try
    		{
    			final Socket client=new Socket(InetAddress.getByName(txtIpS.getText()),1311);
    			final PrintWriter out = new PrintWriter(client.getOutputStream(),true);
    			final BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
     
     
    			new Thread(new Runnable() 
    			{
            	public void run() 
            	{
            		SwingUtilities.invokeLater(new Runnable() 
            		{
            			public void run() 
            			{
     
            				try
            				{
            					out.println("haloooooooo");
            					out.flush();
            					String reponse = in.readLine();
            					System.out.println("le serveur dit : "+reponse);
     
            					client.close();
     
            				}catch (Exception e){e.printStackTrace();}
     
            			}
            		});
            	}
            }
            ).start();
     
     
     
    		}catch(UnknownHostException e) {
                //System.err.println("Don't know about host: taranis.");
     
            } catch (IOException e) {
    //            System.err.println("Couldn't get I/O for the connection to: taranis.");
     
            }
     
     
     
      }
    Et par la meme occasion comment je fait pour afficher une ProgressBar lorsque le client attend la reponse du serveur ??
    Merci pour votre aide..

  2. #2
    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
    Tout à fait normal, tu mets l'intégralité du code de la méthode run de ton thread dans l'EDT avec l'invokeLater...

    On l'invokeLater ne doit être utilisé que pour des modifications directes de ton interface graphique (appel de méthode de composants Swing...)

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Dans ce cas je le met ou le code de recuperation de la reponse du serveur ?

  4. #4
    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
    Dans la méthode run de ton thread mais avant d'appeler l'invokeLater

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    très bien ca a marché


    Tu peut m'aider s'il te plait a mettre en place une progressbar lorque le client est en attente de la reponse du serveur ??
    Merci d'avance ...

  6. #6
    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

Discussions similaires

  1. Probleme de threads
    Par cryptorchild dans le forum Langage
    Réponses: 7
    Dernier message: 02/02/2006, 02h27
  2. Problème de threads avec pthread_create
    Par 180degrés dans le forum Linux
    Réponses: 6
    Dernier message: 19/12/2005, 12h07
  3. Probleme fermeture Thread
    Par Raton dans le forum MFC
    Réponses: 4
    Dernier message: 29/09/2005, 09h51
  4. Réponses: 9
    Dernier message: 30/08/2005, 09h17
  5. [Kylix] Problème de thread
    Par moltov dans le forum EDI
    Réponses: 1
    Dernier message: 22/06/2005, 13h28

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