Представляем задержку в Java-программе - PullRequest
2 голосов
/ 09 июля 2010

Я вызываю файл .exe из моего кода Java, используя:

Runtime r=Runtime.getRuntime();  
Process p=null;
p=r.exec("ABCD.exe");

Я хочу, чтобы программа подождала, пока исполняемый файл завершит свою работу. (Это фактически код на стороне сервера ... управление проходитна стороне клиента после этого). Проблема теперь в том, что пользовательский интерфейс на стороне клиента заполняется до того, как .exe на стороне сервера может сформировать требуемые компоненты. Однако сформированный пользовательский интерфейс не имеет правильных файлов.Я пробовал обычную функцию p.waitfor (), но она не работает.Есть предложения?

1 Ответ

6 голосов
/ 09 июля 2010

Короткий ответ: вы хотите вызвать Process.waitFor () в своем основном потоке, как вы намекаете.

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

Если вы дадите больше информации о том, как «это не работает», это также поможет при диагностике.


Редактировать: в совершенно отдельной точке нет смысла инициализировать p для обнуления, а затем немедленно переназначить его.Ваша вторая строка будет более понятной и менее запутанной, как Process p = r.exec("ABCD.exe");.

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