Я разрабатываю небольшое настольное приложение JavFXML, включающее TaskWorker. Цель состоит в том, чтобы запустить работника задачи при нажатии кнопки, но ничего не происходит и работник задачи не вызывается. Код щелчка мыши следующий:
Код: Выделить всё
public class TableViewController implements Initializable{
....
@FXML private void handleGoButton (ActionEvent event) {
TaskWorker taskworker = new TaskWorker(50);
new Thread(taskworker).start();
}
Первоначальной целью было запустить индикатор выполнения и операторы копирования файлов внутри TaskWorker, но чтобы попытаться понять проблему, я удалил большую часть этого кода и заменил его простым циклом. который печатает значение индекса. Таким образом, Taskworker выглядит следующим образом:
Код: Выделить всё
public class TaskWorker extends Task {
public int value;
public TaskWorker (int value) {
this.value = value;
System.out.println("Value = " + this.value );
}
@Override
protected Void call() throws Exception {
for (int i=0; i < this.value; i++){
System.out.println("Value of i = " + i );
Thread.sleep(400);
}
return null;
}
}
При щелчке мыши я ожидал вывода, подтверждающего, что конструктор в TaskWorker получил переданное значение, и вывода, показывающего значение индекса до переданного значения. Taskworker получает значение в конструкторе:
Код: Выделить всё
compile:
run:
Value = 50
BUILD SUCCESSFUL (total time: 18 seconds)
но метод call() никогда не запускается.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... -not-start