Task を使用して preogress バーを更新しようとしています。これは私のコードです:
ObservableList<somePOJO> listWithProblem = FXCollections.observableArrayList();
Task task = new Task<Void>() {
@Override
public Void call() throws Exception {
final int max = 10;
int i = 0;
while (i < max) {
if (isCancelled()) {
break;
}
if (i == 0) {
i++;
List<SomePOJO> someList = someActionReturningList();
listWithProblem.clear(); // This list has problem!
if (!someList.isEmpty()) {
for (SomePOJO object : someList) {
listWithProblem.add(object);
}
}
Thread.sleep(1000);
updateProgress(i, max);
} else {
i++;
Thread.sleep(1000);
updateProgress(i, max);
}
}
}
return null;
}
};
ProgressBar bar = new ProgressBar(0);
bar.progressProperty().bind(task.progressProperty());
new Thread(task).start();
そのたびに線に引っかかるようですlistWithProblem.clear();
。私がそれを取り除けば、すべてがうまくいくでしょう。なぜそうなのか、私には理解できません。ヒントをありがとう!