Использовать модуль данных в приложении-службе - PullRequest
2 голосов
/ 24 мая 2010

Я написал свое приложение Win32 для тестирования и отладки.Я создал модуль данных со всеми функциями, необходимыми для запуска сокетов TCP и компонентов IBDatabase.

После успешного тестирования модуля данных в среде приложения Win32 я пытаюсь подключить модуль данных в созданный мной шаблон приложения-службы.Я не могу заставить его работать.

Может ли кто-нибудь указать, является ли эта стратегия использования модуля данных с функциональностью Компонента, инкапсулирующего основные сервисные функции, работоспособной, и привести простой пример шаблона, как его подключить, еслиэто ??

Ответы [ 3 ]

7 голосов
/ 24 мая 2010

Вы должны создать и инициализировать свой модуль данных в событии запуска службы. Будьте осторожны, чтобы модуль данных не открывал диалоговые окна или тому подобное, или он зависал в ожидании ввода, который никогда не мог прийти (существуют способы заставить службу взаимодействовать с рабочим столом пользователя, но хороший сервис должен их избегать). Но, не глядя на ваш код, трудно сказать, что идет не так.

2 голосов
/ 24 мая 2010

Как уже упоминали другие, да, это определенно возможно.Для моей реализации я на самом деле просто делаю свой модуль данных автоматически созданным в Project Options.Тогда мой сервисный код очень легкий и сводится к следующему:

procedure TMyService.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Started := myDataModule.Startup;
end;

procedure TMyService.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  myDataModule.Cleanup;
  Stopped := True;
end;
1 голос
/ 24 мая 2010

Да, модуль DataModule может работать в приложении-службе.
Это именно то, что мы имеем для наших серверов приложений среднего уровня.

...