Interface travando

2 respostas
J

boa noite galera meu problema e o seguinte estou criando um programa para back de arquivos e bem simples porem criei o codigo de copia em um arquivo .bat
estou usando esse codigo para rodar o .bat

public void exec_bat() throws IOException{
   
  Process p = Runtime.getRuntime().exec("C:\\script_backup.bat");   
  BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream())); 
  while ((line = input.readLine()) != null) {   
   System.out.println(line);
   
}   
input.close();  

}

porem quando executo ele pelo botão trava a interface do programa no console mostra que a copia esta sendo feita mas a parte grafica trava interira o que pode ser?
desde ja agradeço a atenção

2 Respostas

ViniGodoy
  1. Tópico movido para o fórum de interface gráfica. Por favor, leia atentamente a descrição dos fóruns antes de postar.

  2. Para o Swing não travar, você deve executar todo e qualquer processamento pesado numa thread separada.

public void exec_bat() {
   new Thread(new Runnable() {
      @Override
      public void run() {   
         try {
           Process p = Runtime.getRuntime().exec("C:\\script_backup.bat");   
           BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream())); 
           while ((line = input.readLine()) != null) {   
              System.out.println(line);
           }
           System.out.println("Process exit code: " + p.waitFor());
           input.close();  
         } catch (IOException e) {
            throw new RuntimeException(e);
         }
      }
   }).start();   
}
  1. Para mais informações leia: http://download.oracle.com/javase/tutorial/uiswing/concurrency/
J

o vini desculpa a minha falta de atenção valeu pelo codigo.
brigadão

Criado 2 de junho de 2011
Ultima resposta 2 de jun. de 2011
Respostas 2
Participantes 2