Как проверить ход процесса - PullRequest
1 голос
/ 03 февраля 2011

Я разработал отдельное приложение с использованием Java, в котором я выполняю внешний процесс с использованием среды выполнения. Но выполнение этого процесса занимает много времени, и я хотел бы отобразить его прогресс.

Как я могу получить прогресс процесса, который был выполнен с использованием среды выполнения Java? Должен ли я использовать индикатор выполнения?

Ответы [ 4 ]

3 голосов
/ 03 февраля 2011

Чтобы иметь возможность «знать» о ходе процесса, вам необходимо реализовать какие-то вехи, которые процесс меняет по мере его продвижения. Вам нужно будет реализовать эту логику, чтобы внешний процесс уведомил ваше приложение о своем прогрессе. Однако это не всегда возможно (потому что, прежде всего, вам нужен доступ к коду внешнего процесса) или просто сделать.

Что вы можете сделать, так это использовать индикатор Marquee Progress, анимация будет работать бесконечно:

Иногда вы не можете сразу определить длину продолжительного задача, или задача может остаться в то же состояние завершения для много времени. Вы можете показать работу без измеримый прогресс, поставив индикатор выполнения в неопределенном режиме. индикатор выполнения в неопределенном режиме отображает анимацию, чтобы показать, что работа происходит.

Вы можете взглянуть на этот учебник по Java (там же, где я получил текст выше) для получения дополнительной информации.

1 голос
/ 03 февраля 2011

Чтобы добраться до сути: если вы не знаете и не можете контролировать, измерять или прогнозировать длительность транзакции, используйте jProgressBar1.setIndeterminate(true);

1 голос
/ 03 февраля 2011

Это возможно только при чтении из выходных потоков процесса (myProcess.getInputStream () и myProcess.getErrorStream ()) и, конечно, только если процесс отображает свой прогресс на выходе.

Естьпроцессы, которые отображают прогресс только тогда, когда считают, что они работают в интерактивной оболочке, поэтому вам нужно «эмулировать» оболочку, передав соответствующие параметры среды (wget - один из этих инструментов).

Конечно, у вас естьчтобы вручную проанализировать выходные данные процесса.

Если ваш внешний процесс включает передачу данных из одной команды в другую, вы можете использовать команду pv (1) , чтобы отобразить вывод.

0 голосов
/ 03 февраля 2011

Вам необходимо связаться с внешним процессом, чтобы получить его статус. Если внешний процесс ничего не сообщает о своем статусе, вы не можете выполнить то, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...