javafx 后台任务未运行多次

Pra*_*mar 2 task javafx-2

以下是我的Task初始化

        final Task<Void> vt=voiceTask();
        Button btn = new Button();
        btn.setText("Say");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                new Thread(vt).start();
            }
        });
Run Code Online (Sandbox Code Playgroud)

这是任务编码

public Task<Void> voiceTask() {
    return new Task<Void>(){
        @Override
        protected Void call() throws Exception {
            HelloWorld hw=new HelloWorld();// HelloWorld is simple .java class getting voice through sphinx
            updateMessage(hw.Hello());
            return null;

        }

    };
}     
Run Code Online (Sandbox Code Playgroud)

现在,第一次单击 btn 按钮时,任务正常运行,但随后单击时,不会调用任务。

我希望每次点击时都调用任务。请建议我如何修改我的代码来做到这一点......

Jam*_*s_D 5

请参阅JavaDocs。

与 FutureTask 一样,Task 是一次性类,不能重用。

每次按下按钮时,您都需要创建一个新任务。

    final Button btn = new Button();
    btn.setText("Say");
    btn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            final Task<Void> vt=voiceTask();
            vt.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
                @Override
                public void handle(WorkerStateEvent event) {
                    btn.setDisable(false);
                }
            });
            btn.setDisable(true);
            new Thread(vt).start();
        }
    });
Run Code Online (Sandbox Code Playgroud)