accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Lanciare un thread all'interno di un altro thread

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  it.comp.java ] 

Retour : Accueil du site it comp java  


  Sujet:   Lanciare un thread all'interno di un altro thread  
 De: emmed...@TOGLIEREjdfsFINOdghjAfsdgQUIgmail.com (mdema@diesel)
 Groupes: it.comp.java
 Organisation: C.U. srl News Server
 Date: 12. Jul 2008, 15:16:05
Salve a tutti
Ho un problema con la gestione (molto basilare a dire il vero) del 
multithreading in un programma che sto scrivendo.
Vi spiego prima di tutto qualìè il mio obbiettivo:
il programma si collega a Internet, scarica una pagina, la elabora e 
restituisce un risultato; queste operazioni possono rikiedere un certo 
tempo, quindi tutto il processo l'ho messo in un thread a parte 
(utilizzando SwingWorker).
Il problema è che, a volte, le operazioni sulla pagina dovrebbero 
iterarsi.....cioè, a partire da quella pagina, devo poi fare altre volte 
lo stesso processo.
Io avevo pensato, concettualmente, di avviare (nel caso sia necessario) 
un ulteriore thread dall'interno di quello che sta eseguendo...
Solo che non riesco a farlo....
Provo a inviarmi il codice, un poco spiegato:

	
         SwingWorker worker = new SwingWorker<String,Void>(){

         @Override
         protected String doInBackground() throws Exception {

             /* Codice vario per gestire una barra e simili....*/

             /* L'operazione principale, quella per cui di fatto sto 
usando il thread*/
	    String plot = getter.getPlotfromTitle();

             return plot==null? null : plot;
         }

         @Override
         protected void done(){
             try {
                 String result = get();

                 enableAll();

                 busyIconTimer.stop();
                 statusAnimationLabel.setIcon(idleIcon);

                 if(result==null){
                     // Altro codice di gestione....
		     ......

                     JOptionPane.showMessageDialog(null,"NON TROVATO!");
                     Vector<String> dym = getter.getDidYouMean();
                     if(!(dym.isEmpty())){
                         JFrame mainFrame = 
GetPlotsApp.getApplication().getMainFrame();
                         dymBox = new DidYouMeanDialog(mainFrame, dym);
                         dymBox.setLocationRelativeTo(mainFrame);
                         GetPlotsApp.getApplication().show(dymBox);
			
			/* E qui, nel caso una variabile che viene modificata da dymBox 
contenesse dei dati,
			   vorrei avviare un thread UGUALE a quello che è eseguito adesso, 
però con i nuovi dati
                            (in sostanza solo cambierebbero dei 
parametri dell'oggetto "getter" ).
			   Solo che non so come fare per richiamare il thread...ho provato a 
inserire qui
			   una chiamata a doInBackground(), ma dopo essere entrato, non 
usciva più....*/
                     }
                 }
                 else{
                     txtarea.setText(result);
                 }
             } catch (InterruptedException ex) {
 
Logger.getLogger(GetPlotsView.class.getName()).log(Level.SEVERE, null, ex);
             } catch (ExecutionException ex) {
 
Logger.getLogger(GetPlotsView.class.getName()).log(Level.SEVERE, null, ex);
             }
         }
     };

     //Qui avvio il thread.
     worker.execute();


Spero di essere stato chiaro....
E soprattutto spero che qualcuno sappia darmi una dritta.....anche se 
implica cambiare il programma!!
Grazie a tutti!
Ciaoo


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)
Usenet Gratuit