Не разберусь как корректно запустить и завершить таск... Необходимо по нажатию одной и той же (это важно) кнопки, запускать таск и по ее же нажатию еще раз, завершать таск. Как это сделать?
Такой код выдает ошибку после повторного запуска...
Task<Void> task = new Task<Void>() {
@Override
protected Void call() throws Exception {
// TODO Auto-generated method stub
runT(this);
return null;
}
};
@FXML
// startC это кнопка по которой и нужно запускать/завершать задачу
// logC это текстовое поле для вывода текста о ходе работы
void startM(ActionEvent event) {
if (startC.getText() != "Stop") {
startC.setText("Stop");
logC.appendText("Task is run...\n\n");
new Thread(task).start();
}
else {
startC.setText("Start");
logC.appendText("Task stopped.\n\n");
task.cancel();
}
}
public void runT (Task<Void> task) throws InterruptedException {
int i = 0;
while (true) {
if (task.isCancelled()) {
break;
}
else {
logC.appendText(i+"\n");
i++;
}
TimeUnit.SECONDS.sleep(1);
}
}