监视javafx任务以完成

时间:2013-02-13 16:33:49

标签: java javafx

如何在不中断与任务进度关联的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会停止工作吗?我想在任务完成时显示一条消息。

3 个答案:

答案 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