Вверх ↑
Ответов: 4621
Рейтинг: 746
#1: 2016-09-19 11:25:15 ЛС | профиль | цитата
Судя по коду компонента, событие onConsoleTerminate происходит только при doConsoleTerminate и при ошибках работы с каналами вывода. Возможно, если программа завершается корректно, такой метод не всегда срабатывает.

nesco писал(а):
Этим компонентом вообще-то Netspirit вплотную занимался последнее время
Да, только я никак не затрагивал работу с консольными программами. Пока не могу внятно сформулировать, но что-то меня сильно коробит код и работа этого компонента с консольными программами. Например, если запустить программу этим компонентом, а потом завершить работу самого себя, то запущенная программа тоже убивается (после моих изменений это не происходит после doExec, а после doConsoleExec - происходит). Также подозрительна работа параллельного потока при чтении пайпа; опять же, событие onConsoleResult выдаётся асинхронно, хотя можно предоставить выбор.

Кроме того, пайпы - это такая универсальная штука, по-моему, можно даже читать вывод и подавать команды уже запущенной программе. Можно обмениваться данными между своими программами. А это уже напрашивается парочка компонентов "клиент-сервер" со всеми полезными вещами.
карма: 26

0
Редактировалось 1 раз(а), последний 2016-09-20 10:27:38