Partage
  • Partager sur Facebook
  • Partager sur Twitter

fermeture de thread

j'ai lut le tuto, mais il s'arrete pas le bougre

Sujet résolu
    25 octobre 2010 à 20:58:41

    Bonsoir,

    je viens de nouveau vous demander d'éclairer ma lanterne car maintenant, j'arrive pas à arrêter un thread ...

    le contexte :
    j'ai un ihm avec un bouton calcul qui ... lance un calcul (dans la classe Boat) qui peut prendre pas mal de temps suivant certains paramètre
    le calcul est lancé dans un thread séparé afin de pouvoir mettre à jour l'ihm et avoir une jolie animation :
    j'appelle un méthode qui créé le thread ("calcul") qui est un classe interne ("GZCalculator") et ce thread modifie l'objet de sa classe "Boat" dans sa méthode run

    pour l'arreter, j'ai lu le tuto sur le fermetures de thread mais ça ne fonctionne pas ...

    sur l'ihm, j'ai un autre bouton stop, qui appelle une méthode de la classe "Boat" qui fait un calcul.interrupt()

    le soucis, c'est que le thread ne reçoit aucune interrupt exception et il ne s'arrete pas ...

    je vais essayer de synthétiser le code en question et je met à jour dans la soirée pour que ça soit plus clair (là, je doute!)
    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2010 à 21:06:46

      Si ton thread entre dans une boucle et tourne indefiniment (ou presque) il suffit de gerer ça avec une variable booleene que tu mets dans ton Thread comme attribut.

      Et donc dans la boucle tu teste a chaque fois si la variable de sortie est true, et tu sort de la boucle.

      Ta variable se mettra à jour quand tu veux arreter le thread.

      Voila.
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        25 octobre 2010 à 21:21:47

        effectivement, j'ai pas pensé que je pouvais utiliser cette méthode mais effectivement, ça fonctionne nikel!

        merci (et j'apprendrai à relire un tuto aussi)
        • Partager sur Facebook
        • Partager sur Twitter
          26 octobre 2010 à 10:36:29

          L'InterruptException ne se produit que si le thread visé est temporairement endormi avec une méthode comme sleep, join, wait...

          Pour le reste, il faut soi-même périodiquement tester si le thread a été interrompu avec la méthode isInterrupted.
          • Partager sur Facebook
          • Partager sur Twitter

          fermeture de thread

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown