bonjour,
je cherche le moyen de detruire un thread qui est lancé le temps de l'activation d'un fenetre de type dialog.
En fait j'ai deux probleme mais la même cause.
j'ai une class Opengl qui errite de GLCanvas. cette class implemente un thread animator qui est chargé de rafraichir la fenetre periodiquement.
L'objet Opengl est ajouté dans une fenetre de type dialog. lors de la fermeture de la fenetre dialog le thead est toujours actif et me bouffe de la resource.
j'ai le même probleme avec une class qui errite d'un panel et qui est ajouté dans un dialog. cette class possede un thread qui execute une action periodique. Or lors de la fermeture de l'objet dialog, contenant la classe panel qui contient elle le thead, ce dernier n'est pas detruit.
j'ai réimplementé la method finalize comme on le voit ci dessous mais ce code n'est jamais executé.
Quelqu'un a une idée de pourquoi il n'y a pas d'appelle à cete methode lors de la fermeture de la fenetre dialog?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /* * stop animator before closing component * (non-Javadoc) * @see java.lang.Object#finalize() */ public void finalize() throws Throwable { animator.stop(); System.out.println("Stop OpenGl"); super.finalize(); }
voici le code qui ferme la fenetre de type dialog:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Viewer = null; // Viewer est de type Opengl this.setVisible(false); //this est de type Dialog this.dispose();
Partager