JavaFX stop()方法冻结GUI

时间:2019-05-19 14:44:01

标签: user-interface javafx methods freeze

我有一个使用stop()方法执行清理任务(关闭线程,释放资源等)的应用程序。该清除操作全部封装到一个Task对象中,并且该任务的进度绑定到ProgressBar和Label组件,例如(请注意,无头值是通过读取配置文件获得的,仅表示用户选择了不使用该应用程序即可运行该应用程序GUI,在这种情况下,显然设置为false):

CompleteShutdownTask task = new CompleteShutdownTask();

    if (!headless)
    {
        ProgressBar progressBar = statusBar.getProgressBar();
        progressBar.progressProperty().unbind();
        progressBar.progressProperty().bind(task.progressProperty());

        Label progressLabel = statusBar.getProgressLabel();
        progressLabel.textProperty().unbind();
        progressLabel.textProperty().bind(task.messageProperty());
    }

我知道此逻辑有效,因为在程序启动时,我也有完全相同的方式绑定到这些组件的初始化任务,并且工作正常。我的问题是任务运行正常,但是在stop()方法运行时GUI变得完全无响应。我什至有一个超级简单的方法可以在此按钮运行时禁用按钮,即使该按钮不起作用,在stop()执行时GUI也将完全冻结。

在执行stop()方法时发生这种GUI冻结是否正常?

0 个答案:

没有答案