У меня есть приложение, которое использует метод 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 ().
Это нормально для такого рода зависания графического интерфейса?в то время как метод stop () выполняется?