Hi,
ich hab folgendes Problem.
Ich möchte, dass der User eine .exe Datei auswählt, und sobald er auf Start drückt wird diese beliebig oft(auswahl per Jspinner) hintereinander gestartet und wieder beendet, in einem Abstand von 20 Sekunden.
Um das zu protokollieren soll der User in einer JTextarea folgende Ausgabe erhalten:
programm.exe 1 ist gestartet
programm.exe 1 ist beendet
...
usw.
Folgendes Problem tritt nun auf.
Das Programm bleibt hängen, sobald ich auf "Start" drücke, startet und beendet die .exe und erst danach wird der Text ausgegeben.
Das Programm gibt keinen Fehler aus, führt auch alles aus, lediglich die Verzögerung in der Anzeige der JTextarea stört mich.
Ich hoffe mein Problem ist klar geworden und es gibt jemanden, der in der Lage ist mir zu helfen.
Danke fürs Lesen
mfg
ramotzkie
ich hab folgendes Problem.
Ich möchte, dass der User eine .exe Datei auswählt, und sobald er auf Start drückt wird diese beliebig oft(auswahl per Jspinner) hintereinander gestartet und wieder beendet, in einem Abstand von 20 Sekunden.
Um das zu protokollieren soll der User in einer JTextarea folgende Ausgabe erhalten:
programm.exe 1 ist gestartet
programm.exe 1 ist beendet
...
usw.
Folgendes Problem tritt nun auf.
Das Programm bleibt hängen, sobald ich auf "Start" drücke, startet und beendet die .exe und erst danach wird der Text ausgegeben.
Code:
JSpinner spinner;
JButton choose, start;
JTextArea log;
JFileChooser fc;
public void actionPerformed(ActionEvent e) {
if (e.getSource() == choose) //Wenn der Button choose gedrückt wurde für .exe-Auswahl
{
int returnVal = fc.showOpenDialog(Programm.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
log.append(file.getName() + " ausgewählt\n");
} else {
log.append("Abbruch durch Benutzer\n");
}
}
else if(e.getSource() == start) //wenn Start gedrückt wurde
{
File file = fc.getSelectedFile();
try {
int amount = ((Integer) spinner.getValue());
log.append("Programm wird " + amount + " mal gestartet!\n");
startProgramm(file.getName(), file.getPath(), amount);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Code:
public void startProgramm(String name, String path, int loops) throws Exception
{
for(int i=1; i<=loops;i++)
{
ProcessBuilder pb = new ProcessBuilder(path);
Process process = pb.start();
log.append(name + " " + i + " ist gestartet\n");
Thread.sleep(20000);
process.destroy();
log.append(name + " " + i + " ist beendet\n");
}
log.append("Ausführung beendet!\n");
}
Das Programm gibt keinen Fehler aus, führt auch alles aus, lediglich die Verzögerung in der Anzeige der JTextarea stört mich.
Ich hoffe mein Problem ist klar geworden und es gibt jemanden, der in der Lage ist mir zu helfen.
Danke fürs Lesen
mfg
ramotzkie