Ich habe einen Thread, der eine Aufgabe wiederholt ausführt und ausführt. Ich habe einen Zähler implementiert, um mir die Iterationen der Aufgabe anzuzeigen, die vom Thread ausgeführt wurden. Hin und wieder sehe ich, dass der Schalter irgendwo hängen bleibt und nicht mehr ansteigt. Ich erhalte keine Fehler oder Ausnahmen. Die Anwendung läuft, aber es sieht so aus, als ob der Thread gestoppt hat, ohne dass ich danach gefragt habe.Thread stoppt unerwünscht
werde ich einige Code fügen Sie den Thread-Ausführung zu zeigen:
Mitteilung der int „c“ - das ist der Zähler für Wiederholungen.
public void check() {
Thread check = new Thread() {
public void run() {
for (;;) {
EventQueue.invokeLater(new Runnable() {
public void run() {
// Update GUI here on EventQueue.
try {
Task.readTasks();
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (NoteInfo == null || NoteInfo == "") {
btnViewNote.setEnabled(false);
} else {
btnViewNote.setEnabled(true);
}
textField.setText(Task.printNextTask);
c++;
lblCycle.setText("Cycle: " + c);
}
});
try {
Thread.sleep(5000);
// Task.initializeIt();
} catch (InterruptedException ie) {
break;
}
if (killcheck)
break;
}
}
};
check.start();
}
public static void stopChecking() {
killcheck = true;
progressBar.setValue(0);
textArea.setText("");
textField.setText("");
c = 0;
lblCycle.setText("Cycle: " + c);
}
würde ich vor der Pause eine print-Anweisung setzen, um zu sehen hat der Thread beendet. Ich werde auch eine Print-Anweisung direkt vor der C++ - Anweisung setzen. Ich werde auch meinen Debugger starten und den Thread anhalten, wenn der Zähler nicht mehr erhöht wird. – Alvin