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



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

谢谢你的提示:-)

是的,参见Task javadoc:

因为任务是为使用JavaFX GUI应用程序而设计的,所以它确保对其公共属性的每一次更改,以及状态、错误和事件处理程序的更改通知,都发生在主JavaFX应用程序线程上。

您可以使用下面的代码自己验证这些情况:

task.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent t) {
            System.out.println(Thread.currentThread().getName());
        }
    });

输出应该是:

JavaFX应用线程

最新更新