从Task.onSucceeded()访问GUI元素是否安全?

时间:2013-05-29 17:24:39

标签: asynchronous javafx-2 task

我使用Task进行一些计算,此计算的输出存储为String。计算完成后,输出应显示在TextArea中。使用任务的onSucceeded来设置TextArea的文字是否安全?如果没有,那么等待任务完成然后将输出写入TextArea的最佳/推荐方法是什么?

感谢任何提示: - )

1 个答案:

答案 0 :(得分:3)

是的,请参阅Task javadoc的引用:

  

因为Task设计用于JavaFX GUI应用程序,所以它确保对其公共属性的每次更改,以及状态,错误和事件处理程序的更改通知都发生在主JavaFX应用程序线程上。 / p>

您可以使用下一个代码自行验证此类案例:

task.setOnSucceeded(new EventHandler<WorkerStateEvent>() {

        @Override
        public void handle(WorkerStateEvent t) {
            System.out.println(Thread.currentThread().getName());
        }
    });

输出应为:

  

JavaFX应用程序线程