Olá,
tenho o seguinte problema, tenho uma aplicação em SWT que tenho que processar um arquivo de texto e salvar em SQL,
tudo isso já está funcionando, o problema é o seguinte, como o arquivo tem mais de 3000 linhas até eu valida-lo e
salva-lo esta operação demora uns 40 segundos, durante esse tempo o SWT fica travado ou não responde.
Tentei usar uma thread para executar essa operação, mais não adiantou a aplicação fica travada.
Alguma dica para destravar a aplicação enquanto executo a atualização no banco?
Segue abaixo meu código:
//Listener do botão importar.
btImport.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
importador = new Importador(txConn.getText(), txPath.getText(), txArea, Integer.valueOf(txConta.getText()));
Thread t1 = new Thread(importador);
t1.run();
}
});
// Imports ...
public class Importador implements Runnable{
// Objetos e métodos...
// minha implementação do run()
@Override
public void run() {
try {
mensagens = new String();
insertText("Iniciando...");
Thread.sleep(1000);
connect();
validador = new Validador(conn, filePath);
insertText("Validando arquivo, aguarde...");
//Método demorado
if(validador.isValid()) {
insertText(validador.getMensagens());
insertText("Validação concluida!");
insertText("Gravando lotes, aguarde...");
salvar(); //Método demorado
insertText("Lotes Salvos!");
insertText("Integrando lotes, aguarde...");
integrarLotes(); //Método demorado
insertText("Integração concluida!");
disconnect();
} else {
insertText(validador.getMensagens());
disconnect();
}
} catch (SQLException sqlE) {
insertText(sqlE.getMessage());
} catch (IOException ioE) {
insertText(ioE.getMessage());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}