Я пытаюсь расширить стороннее приложение, чтобы его можно было вызывать через командную строку в дополнение к использованию графического интерфейса Windows (желательно смешанный режим). Это довольно простая программа, которая в основном загружает файл, а затем вы нажимаете кнопку, и она начинает отправлять сетевые пакеты UDP.Добавлена директива {APPTYPE CONSOLE}, и теперь мое приложение работает очень медленно. Перемещение мыши заставляет его работать быстрее
Мне нужно вызвать приложение из другого и хотел бы передать аргумент и должен иметь возможность вернуть ExitCode вызывающему приложению. Из того, что я прочитал, для этого вам нужно добавить директиву компилятора {APPTYPE CONSOLE}.
Я сделал это, и мое приложение работало так, как я этого хотел, за исключением того, что сетевые пакеты замедлялись до обхода. Я обнаружил, что всякий раз, когда я передвигал мышь вокруг формы. То, что скорость передачи сети значительно увеличилась. Я подозреваю, что существует некоторая проблема в очереди сообщений Windows, и перемещение мыши вызывает прерывания, которые, в свою очередь, вызывают обработку очереди сообщений?
Я столкнулся с ошибкой и попробовал вызвать Application.ProcessMessages и PeekMessages в таймере с интервалом 1 мс, и это совсем не помогло. Я нашел в этом user manual for some other application, что он говорит, что Indy 10 поддерживается как в типах APPTYPE CONSOLE, так и в GUI. Честно говоря, это меня просто смущает, поскольку я предполагал, что вся сетевая библиотека будет работать в обоих режимах ... но, как я уже сказал, я не знаком с Delphi.
Я уверен, что проблема изолирована от одной строки в моем приложении, и это означает, включен или нет {APPTYPE CONSOLE} или нет.
У кого-нибудь есть идеи?
Version Info:
Delphi 7 Персональные (Build 4.453)
Инди 9.0.4
@mghie Спасибо за полноту этого сообщения. Первоначально я думал, что ExitCode не работает при использовании {APPTYPE CONSOLE}, но это оказалось ошибкой в моем коде. – blak3r