HSylvio
Messages postés116Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention14 juin 2012
-
7 avril 2006 à 14:12
HSylvio
Messages postés116Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention14 juin 2012
-
10 avril 2006 à 09:03
Bonjour,
Je sais que ce probleme a deja été abordé plusieurs fois mais j'suis un peu dur de la feuille...
Dans une classe principale, j'ai :
public void refreshAll(Thread t){
try {
t.wait();
uiMan.run();
t.notify();
} catch (Exception e) {
e.printStackTrace();
}
}
iuMan.run() fais un repaint sur toutes les JFrames actives
refreshAll est appelee depuis plusieurs Threads de calcul, mais j'ai
une exception du style "current thread not owner", que je mette le wait
là ou dans les threads de calcul; Je voudrai juste pouvoir voir mes
Frames (resultats et autres) pendant qu'il cherchehe encore a ameliorer
la solution, et ainsi pkoi pas arreter les calculs pas un JButton....
Desole de ne pas avoir reussi avec les autres reponses deja presentes sur le forum... merci d'avance
etudev
Messages postés47Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention23 mai 2006 7 avril 2006 à 18:46
Salut,
Oui c'est possible de mettre des arguments dans la methode run( ) , la methode thread.start( ) appelle la methode run() du thread. Ce que je te conseille c'est d'essayé de mettre le wait() et notifyAll() dans la methode new cs"apres le ana.start()".
sinon tu peux laissé tombé le wait( ) et utilisé join(). par exemple:
public void makeRepaint(){
try{
if(null!=ana)
thread1 ex = new thead1();
ex.start();
ex.join();
}
catch(Exception e){
e.printStackTrace();
}
}
Et dans la methode run() du thread thread1 tu peux mettre getMainFrame().repaint();
HSylvio
Messages postés116Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention14 juin 2012 7 avril 2006 à 15:15
Dans la meme classe qui extends Thread :
public Results newCS(arguments a){
...
ana.setOptions(aBis);
ana.start();
return mat.getResults();
}
public void makeRepaint(){
try{
if(null!=ana)
ana.wait(); (*)
getMainFrame().repaint();
notifyAll();
}
catch(Exception e){
e.printStackTrace();
}
}
Et j'ai le meme message d'erreur qui porte sur la ligne (*)
Est-ce qu'il faut absolument que newCS soit run et est-il possible de mettre des arguments aux start() et run()
et ne peut-on pas dire a un thread de laisser la main dans son propre run() et pourquoi est-il aussi méchant???
HSylvio
Messages postés116Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention14 juin 2012 10 avril 2006 à 09:03
Ca a l'air de ressembler à ce que je veux faire; j'ai un autre probleme là alors je te remercie beaucoup j'essaierai de faire çà dès que j'ai le temps... (et oui c'est quand même pas mon objectif principal de faire l'UI...)