Aplicação não está fechando totalmente

11 respostas
luhkas1107

Olá primeiramente quero agradecer quem estiver lendo esse tópico, a questão é...

Tenho uma aplicação que faz uma contagem e que quando chega em 10 segundos ela (aplicação) é atualizada, e quando chega em (2 horas) é feito um backup só que...

até a parte do backup ta tranquilo, só que quando eu fecho a aplicação a contagem continua sem parar,

Para parar eu clico em "Terminate" se não ele não para

Vou explicar as funções atraves dos codigos...

Login(adm) > Menu (Contagem)...

[color=orange]Login[/color]

void logar(){

	senha_func = txtSenha.getText().toString();
	cpf_func  = txtCpf1.getText().toString();

	try {
		
		FuncionarioBean objFunc = new FuncionarioBean();
		objFunc =  FuncionarioDao.selecionarLogin(cpf_func, senha_func);
		
		
		if(objFunc.getId_func() > 0){
			
			nome_func=objFunc.getNome_func();
			id_func=objFunc.getId_func();
			
			if (objFunc.getFuncao_func().equals("Administrativo")){
				if(situacao.equals("Ativado")){
					System.out.println("Sistema esta ativado.");
					JOptionPane.showMessageDialog(null, "Olá administrador " +nome_func+ "\n Seu código de identificação é: " +id_func);							
					setModal(false);
					setVisible(false);
					Menu menu = new Menu();
					menu.setVisible(true);
					menu.tempo();    // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< AKI

				}	else if (descontarUmaFicha()){
					System.out.println("Sistema esta desativado.");
					JOptionPane.showMessageDialog(null, "Olá administrador " +nome_func+ "\n Seu código de identificação é: " +id_func);							
					setModal(false);
					setVisible(false);
					Menu menu = new Menu();
					menu.setVisible(true);

				}

				
			
			}else{
				JOptionPane.showMessageDialog(null, "Verifique suas fichas.");
			}

					
		
	}catch (exception e1) {
			e1.printStackTrace();
		
		}	
			
	}
[color=red]O Login irá redirecionar para esse método no Menu [/color]
public void tempo(){
		 
  	   Timer timer = new Timer();  
	   Date data = new Date();
	   Contador segundos = new Contador();
	   timer.schedule(new Contador(), 1000, 1000);
	   		
	   
	   
	   
	 }

[color=brown] E o Método 'tempo()' vai chamar o contador [/color]

public class Contador extends TimerTask{
	
	 private int hora = 0;  
	    private int minuto = 0;  
	    public  int segundo = 0;  
	      
    public void run() {  
        
        
    	 if(segundo == 10) {
       	  System.out.println("Menu Atualizado");
       	  
       	  Menu menu = new Menu();
       	  
       	  
       	  
       	  
       	  menu.setModal(false);
       	  menu.validate();
     	  menu.setVisible(true);
       	  menu.setVisible(false);
       	  menu.setModal(true);
       	  
    	 }
    	
        System.out.println("Tempo para backup do software (2 em 2 horas) :  "+hora + ":" + minuto + ":" + segundo);  
          
        segundo++;  
          
        if (segundo == 60) {  
            segundo = 0;  
            minuto++; 
         
          
            if (minuto == 60) {  
                minuto = 0;  
                hora++;  
                if (hora == 2) {  
                    hora = 0;  
             
                    System.out.println("Realizando Backup");
                    //CHAMAR METODO PARA BACKUP
                    
                    
                }  
            }  
         
   }
                              
} 
}

Galera quem puder ajudar agradeço muito ^^

11 Respostas

michetti

Da um stop() para ver se resolve o seu problema.

luhkas1107

Vou tentar… Mas aonde eu coloco???

luhkas1107

Será preciso criar um metodo para fechar ??

michetti

Como eu vi esta função Timer em C# não tenho certeza, mas você pode testar ai…

time.stop()

luhkas1107

Não… não existe essa função :frowning:

michetti

Dando umas “zoiada” no google achei isto aqui…

Timer t = new Timer();
t.cancel(); //In order to gracefully terminate the timer thread

luhkas1107

Esse dai tbm achei agora a pouco rsrsrs

só que onde eu ponho para ele execultar quando eu fechar a aplicação…

michetti

Você tem que chamar ele onde você fecha a aplicação no caso me parece que seria aqui.

}   else if (descontarUmaFicha()){  
                        System.out.println("Sistema esta desativado.");  
                        JOptionPane.showMessageDialog(null, "Olá administrador " +nome_func+ "\n Seu código de identificação é: " +id_func);                              
                        setModal(false);  
                        setVisible(false);  
                        Menu menu = new Menu();  
                        menu.setVisible(true);  
      
                    }  
      
                      
                  
                }
luhkas1107

Não ta dando certo, tenho que arrumar um método que pegue a ação de fechar o aplicativo e jogue o time.cancel() dentro dele

michetti

Testa ai… qualquer coisa so postar :slight_smile:

luhkas1107

Deu certo não :frowning:

Criado 17 de dezembro de 2013
Ultima resposta 17 de dez. de 2013
Respostas 11
Participantes 2