【发布时间】:2015-10-04 04:21:50
【问题描述】:
也许有人会知道如何解决这个问题,因为我不知道。我试图运行我的类扩展任务,当我第一次尝试运行它时它运行正常(我将它用于progressBar)。当我的任务完成第一个操作时,我正在尝试下一个调用但它不起作用,只有进度条显示初始化消息。无论如何谢谢/bw。
代码如下:
声明:
public class QueryCreator extends Service<Void>{
...
//constructor
....
@Override
protected Task<Void> createTask() {
return new Task<Void>(){
@Override
protected Void call() throws Exception {
updateMessage("Init");
// count is ;d count of queries
for(int i = 0 ; i < count ; i++){
String queryString = "";
....
// creating string for query
....
FileSaver.getInstance().writeLine(queryString); // instance of file where i put created queries
updateProgress(i+1,count);
int procent = ((i+1)*100)/count;
updateMessage("Done: " + procent + "" + "/100");
}
FileSaver.getInstance().closeFile();
updateMessage("File created");
return null
}
};
}
}
用法:
....
Service<Void> QueryWorker = new QueryFileCreator(....);
progressBar.progressProperty().unbind();
progressBar.progressProperty().bind(QueryWorker.progressProperty());
QueryWorker.messageProperty().addListener((obs, oldVal , newVal)- {
procentLabel.setText(newVal);
});
FileSaver.getInstance().createFilePath( .....// filechooser // ) ; // creating file path via filechooser
QueryWorker.start();
....
【问题讨论】:
-
@jewelsea 这不是答案
-
你能检查一下是否有异常被抛出,如果有异常则显示堆栈跟踪吗?据我从您的代码中可以看出,您只需丢弃任何异常。
-
哦,我看到了 Kacper,您将问题中的代码从任务编辑为服务。我删除了重复的标志,因为它现在明显不同了。
标签: java multithreading javafx progress-bar task