Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在服务应用程序中使用数据模块_Delphi_Windows Services_Service_Datamodule - Fatal编程技术网

Delphi 在服务应用程序中使用数据模块

Delphi 在服务应用程序中使用数据模块,delphi,windows-services,service,datamodule,Delphi,Windows Services,Service,Datamodule,我写了我的Win32应用程序来测试和调试。我已经创建了一个datamodule,其中包含运行TCP套接字和IBDatabase组件所需的所有功能 在Win32应用程序环境中成功测试了Datamodule之后,我正在尝试将Datamodule挂接到我创建的服务应用程序模板中,但我无法让它运行 是否有人可以指出使用带有封装主要服务功能的组件功能的Datamodule的策略是否可行,并给出一个简单的模板示例,说明如何将其连接起来?如果可行,您可以让Datamodule在服务应用程序中工作。 这正是我们

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

在Win32应用程序环境中成功测试了Datamodule之后,我正在尝试将Datamodule挂接到我创建的服务应用程序模板中,但我无法让它运行


是否有人可以指出使用带有封装主要服务功能的组件功能的Datamodule的策略是否可行,并给出一个简单的模板示例,说明如何将其连接起来?如果可行,您可以让Datamodule在服务应用程序中工作。

这正是我们为中间层应用服务器提供的功能。

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

正如其他人所提到的,是的,这是绝对可能的。对于我的实现,我实际上只是将我的数据模块设置为“在项目选项中自动创建”。那么,我的服务代码很轻,归结起来就是:

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;

我可以在上面安装一个套接字服务器吗?当然可以。您可以在其上放置任何非可视组件。见@ldsandon的答案。