在服务应用程序中使用Datamodule

时间:2010-05-24 16:37:41

标签: delphi windows-services service datamodule

我写了我的Win32应用程序来测试和调试。我已经创建了一个数据模块,其中包含运行TCP套接字和IBDatabase组件所需的所有功能。

在Win32应用程序环境中成功测试Datamodule后,我试图将Datamodule挂钩到我创建的Service Application模板中,我无法让它运行。

有人可以指出这种使用带有组件功能的数据模块封装主要服务功能的策略是否可行,并给出一个简单的模板示例,说明如果它是如何连接它?

3 个答案:

答案 0 :(得分:7)

您必须在服务启动事件中创建并初始化数据模块。请注意,数据模块不应该打开对话框等,否则它会挂起等待永远不会出现的输入(有一些方法可以让服务与用户桌面通信,但是一个好的服务应该避免它们)。 但是,如果不查看代码,很难说出现了什么问题。

答案 1 :(得分:2)

正如其他人所说,是的,这绝对是可能的。对于我的实现,我实际上只是在项目选项中将我的数据模块设置为自动创建。然后我的服务代码非常轻,归结为:

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;

答案 2 :(得分:1)

是的,您可以在服务应用程序中使用DataModule 这正是我们为中间层应用服务器所拥有的。