Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Chiusura applicazione con un ciclo in esecuzione

    Salve a tutti,
    scrivo perchè non sto riuscendo a risolvere un problema che può sembrare stupido ma che in realtà mi sta dando molti problemi: chiudere una applicazione una volta aperta!
    Ecco qualche riga più importate della mini applicazione in java che avvio con ecplipse:

    codice:
    Bottone (b1) in una semplicissima finestrella fatta in swing:
    public void actionPerformed(ActionEvent e) {
    		if (e.getSource() == b1) {
    			try {
    				MitikBot.main();
    			} catch (Exception err) {
    			}
    }
    Ecco la main della classe MitikBot:

    codice:
    public static void main() throws Exception {
    		
    System.out.println("programmino avviato!");
    		
    		for (int i = 0; i < MitikBot.getLines()  & check==1; i++) {
    
    			Thread.sleep(MitikBot.randomWait());
    
    			MitikBot.clickBar();
    
    			Thread.sleep(1000);
    			MitikBot.writeBar(i+1);
    
    			Thread.sleep(2000);
    			MitikBot.closeURL();
    			
    		}
    		
    		System.out.println("Finito!");
    
    	}
    La mia apparentemente semplice domanda è: appena clicco sul run di Eclipse, l'applicazione si avvia e la finestrella (composta solo da un paio di bottoni quali Avvia ed Esci) si apre. Io clicco su Avvia (il b1 di prima) e il ciclo for inizia a ripetersi fermandosi solo dopo circa mezz'oretta. La finestrella con i bottoni, mentre il for è in esecuzione sembra nn calcolarmi completamente anche se clicco la x per chiudere, e solo dal bottone termina di elipse riesci a fermarla e a fare chiudere tutto! Qual è il problema?
    Spero di essere stato chiaro, aspetto risposta.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Chiusura applicazione con un ciclo in esecuzione

    Originariamente inviato da sharkdrew
    La mia apparentemente semplice domanda è: appena clicco sul run di Eclipse, l'applicazione si avvia e la finestrella (composta solo da un paio di bottoni quali Avvia ed Esci) si apre. Io clicco su Avvia (il b1 di prima) e il ciclo for inizia a ripetersi fermandosi solo dopo circa mezz'oretta. La finestrella con i bottoni, mentre il for è in esecuzione sembra nn calcolarmi completamente anche se clicco la x per chiudere, e solo dal bottone termina di elipse riesci a fermarla e a fare chiudere tutto! Qual è il problema?
    È la solita questione, che chi lavora con interfacce Swing deve conoscere. Il EDT (Event Dispatch Thread) è il singolo/solo thread adibito alla gestione della intera interfaccia utente (disegno dei componenti Swing, dispacciamento degli eventi e altro...). Il actionPerformed è invocato dal framework proprio nel contesto del EDT.
    L'approccio fondamentale da seguire è quello di non tenere mai impegnato per troppo tempo il EDT ... altrimenti la interfaccia utente è "congelata" in quel frangente di tempo.
    Se ne è parlato (e ne ho anche io parlato) sul forum allo sfinimento ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    grazie mille! non hai idea che aiuto mi hai dato...
    ti chiedo scusa se te ne ho fatto parlare di nuovo ma ho cercato non sai quanto ma non ho trovato niente!
    Adesso mi è sorto un dubbio...come risolvo il problema? Ho capito dove sbaglio ma non como risolvere...potresti suggerirmi una soluzione?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sharkdrew
    come risolvo il problema?
    Eseguendo quel "lavoro" in un thread a parte.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.