2

如何在不中断与任务进度关联的 progressIndicator 的情况下检查 javafx 后台任务是否已完成。

try
{
AddMeteorParents amp = new AddMeteorParents(textOpenDB.getText(), textMeteorData.getText(), DatabaseTools.meteorVersion.Meteor14);
proIndAddData.setVisible(true);
proIndAddData.progressProperty().bind(amp.progressProperty());
Thread th = new Thread(amp);
th.setDaemon(true);
th.start();
}

AddMeteorParents 类从 Task 扩展而来。ProIndAddData 是一个 javafx 进度指示器。如果我添加 th.join() 或 th.isAlive() javafx progressIndicator 停止工作?我想在任务完成后显示一条消息。

4

3 回答 3

1

我能够使用 ExecutorService 一个接一个地运行一个后台任务(不会中断 progressIndicators)。

ExecutorService eservice = Executors.newFixedThreadPool(1);
于 2013-02-13T19:25:15.743 回答
0

javafx.concurrent.Task的 javadoc说:

对状态变化做出一般反应

有时您可能想要编写一个更新其进度、消息、文本的任务,或者在任务发生状态更改时以其他方式做出反应。例如,您可能希望在失败、成功、正在运行或已取消状态更改时更改任务的状态消息。

http://docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html#onSucceededProperty

于 2013-02-13T16:45:06.340 回答
0

用于javafx.concurrent.Task包装您的任务代码,这stateProperty是您需要检查的。

看我的要点https://gist.github.com/John-Chan/ee6b783c6e96c09c79a03a3da8fe14c4

于 2019-05-15T16:01:24.320 回答