У меня есть приложение javafx и рабочий поток, реализованный через javafx.concurrent.Task
, который выполняет длительный процесс, который выполняет zipping и загрузку набора файлов.
Я подключил выполнение задачи к индикатору выполнения через progressProperty
.
В дополнение к этому я хочу подробное состояние об обрабатываемом элементе, которое будет отправлено в ui. То есть имя обрабатываемого файла вместе с его размером и любой ошибкой, которая может возникнуть из процесса одиночного файла.
Обновление пользовательского интерфейса с помощью этой информации не может быть выполнено из рабочего потока, и я могу добавить его в синхронизированную коллекцию.
Но тогда мне нужно какое-то событие, чтобы сообщить пользовательскому интерфейсу, что новые данные доступны.
У javafx есть определенная поддержка этой проблемы?
обновление, лучшая формулировка
Вместо того, чтобы разрабатывать специальный механизм перекрестных потоков как Platform.runLater, я пытаюсь разрешить прослушивание каждого свойства из других потоков. Точно так же, как runningProperty и stateProperty, предоставляемые Task