View Issue Details

IDProjectCategoryView StatusLast Update
0000715Database Comparer VCLGeneralpublic2019-12-25 00:11
Reportershirokov Assigned Tobarry  
PrioritynormalSeverityfeatureReproducibilityalways
Status feedbackResolutionopen 
Summary0000715: Компоненты не работают в Windows service
DescriptionПри попытке использовать компоненты в сервисе, мешает вызов ShowMessage - он лочит сервис. Как вариант, сделать проверку на наличие обработчика для эвента dbcOnShowMessage. Скорее всего, и ProcessMessages тоже надо как-то уметь выключать. Сейчас обе функции выключаются только для линукса.
TagsNo tags attached.

Activities

barry

2019-12-24 17:00

administrator   ~0004279

Проверку обработчика сделать в принципе можно, но мы же не можем управлять условно включением юнитов в компилируемый проект на этапе исполнения. Или я не так понял.
Насколько я помню, если не ошибаюсь, включение Forms или Dialogs лочит сервис.
Мы это должны делать на этапе компиляции проекта (если не рассматривать динамически загружаемые bpl/dll).
Конечно же сообщения об ошибках терять не стоит. Как альтернатива - можно писать в системный лог вместо ShowMessage. Я в принципе ни разу это не юзал, но думаю хотя бы на уровне Windows API есть соотв. функции, наверняка и врапперы в Delphi, я просто не углублялся в эту тему.
Можем например сделать это через условную компиляцию. Определять {$DEFINE SERVICE} например и соотв. дефаултный обработчик ErrMsg направлять в диалоговое окно или в системный лог.

barry

2019-12-25 00:11

administrator   ~0004280

Я пересмотрел - у нас в общем-то проблема эта решалась. Вее вынесено в dbcMsg.pas.
Для сервиса этот юнит можно просто заменять своим с нужной реализацией записи ошибок в нужное место.

Issue History

Date Modified Username Field Change
2014-10-02 15:50 shirokov New Issue
2019-12-24 16:48 barry Assigned To => barry
2019-12-24 16:48 barry Status new => acknowledged
2019-12-24 17:00 barry Note Added: 0004279
2019-12-24 17:00 barry Status acknowledged => feedback
2019-12-25 00:11 barry Note Added: 0004280