LINUX.ORG.RU

javafx корректный запуск и завершение task

 , , ,


0

1

Не разберусь как корректно запустить и завершить таск... Необходимо по нажатию одной и той же (это важно) кнопки, запускать таск и по ее же нажатию еще раз, завершать таск. Как это сделать?
Такой код выдает ошибку после повторного запуска...

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);
}
}


вот это

new Thread(task)
сохраняй в переменную. когда нажимаешь на кнопку - проверяй, если таск не terminated, то прерывай его. или запускай новый.

bvn13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.