如何在不中断与任务进度关联的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会停止工作吗?我想在任务完成时显示一条消息。
答案 0 :(得分:1)
我能够使用ExecutorService运行一个接一个的后台任务(没有任何中断progressIndicators)。
ExecutorService eservice = Executors.newFixedThreadPool(1);
答案 1 :(得分:0)
javafx.concurrent.Task的javadoc说:
一般地对状态变化做出反应
有时您可能想要编写一个更新其进度的任务, 消息,文本或以其他方式在状态改变时作出反应 发生在任务上。例如,您可能想要更改状态 “失败,成功,运行或已取消状态”任务上的消息 变化。
http://docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html#onSucceededProperty
答案 2 :(得分:0)
使用javafx.concurrent.Task
包装您的任务代码,stateProperty
是您需要检查的内容。
见我的要旨https://gist.github.com/John-Chan/ee6b783c6e96c09c79a03a3da8fe14c4