Приложение PowerBuilder вызывает библиотеку Delphi DLL - PullRequest
1 голос
/ 30 ноября 2011

Я вызываю DLL-файл Delphi (многопоточные сокеты dll) с использованием PB. Когда форма приложения PB закрыта, она не завершается по-настоящему и остается в диспетчере задач !!!Зачем?Как освободить многопоточную библиотеку сокетов после завершения работы приложения powerbuilder?Заранее спасибо за ваш ответ!

1 Ответ

1 голос
/ 01 декабря 2011

DLL-библиотека, написанная на Delphi, загружаемая приложением Powerbuilder, которая выполняет любые сетевые коммуникации, которые она может выполнять, не будет существовать, если приложение Powerbuilder действительно завершит работу.

В Windows невозможно, чтобы что-то могло поддерживать ваш процесс после его завершения Powerbuilder, если только эта вещь не является потоком внутри DLL-библиотеки delphi, созданной DLL-библиотекой delphi.

Я бы посоветовал вам отслеживать потоки, существующие в вашем приложении, с помощью отладчика delphi. Вы можете запустить свое приложение powerbuilder из среды разработки Delphi, открыв свой проект delphi (который используется для сборки DLL) и установив параметры запуска проекта, чтобы запускаемое приложение powerbuilder, которое загружает DLL, было «исполняемым файлом» в диалоговое окно RUn -> параметры в IDE Delphi.

Теперь запустите все это в режиме отладки (зеленая кнопка со стрелкой на панели инструментов Delphi IDE), откройте панель «Потоки» и посмотрите, какие потоки запускаются в приложении Delphi. Если нет никаких дополнительных потоков, запущенных DLL-библиотекой delphi (скажем, основной поток powerbuilder - единственный поток, который вы можете видеть), то DLL-библиотека Delphi не сможет держать ваше приложение открытым.

На самом деле, наиболее вероятно, что ваша программа зависает (зависает) из-за какой-то основной проблемы в powerbuilder или DLL. Опять же, решение проблемы, вероятно, потребует от вас некоторой отладки, как с помощью powerbuilder, так и delphi. больше информации поможет людям помочь вам.

...