【问题标题】:Alternative to Application.DelayInitialize for Delphi 7 Service?Delphi 7 服务的 Application.DelayInitialize 的替代方案?
【发布时间】:2016-12-24 11:47:01
【问题描述】:

对于 Delphi 7,是否有 Application.DelayInitialize 的替代方案?我正在尝试创建一个托管 COM 服务器的 Delphi 7 服务,但它不起作用,我相信这是因为我没有使用 Application.DelayInitialize。

Re: Windows Service / DelayInitialize

【问题讨论】:

  • 我相信我的服务需要做 X。它不做 X。有没有做 X 的替代方法?我理解正确吗?
  • 除此之外,您是如何诊断问题的。你能清楚地说明问题是什么吗?

标签: delphi delphi-7 dcom


【解决方案1】:

我已经使用 BCB6 编写了几个 COM 托管服务,它们在 Win9x 及更高版本的所有 Windows 版本中都可以正常工作,因此我不得不多次处理同样的问题。

在 Win2003+ 上的进程启动时不要调用Application.Initialize(),等到TServiceOnStartOnExecute 事件调用它。这样,服务 API 就会在任何 COM 对象初始化之前运行。

诀窍是延迟对Application.Initialize() 的调用仅在Win2003+ 上并且仅在服务实际运行时。如果任一

,请不要延迟通话
  1. 该服务在早于 2003 年的 Windows 版本上运行。
  2. 正在(卸载)安装服务时。
  3. COM 对象正在(取消)注册时。

在这种情况下,正常在进程启动时调用Application.Initialize()

因此,您需要检查操作系统版本和命令行参数以了解何时正确调用Application.Initialize()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 2020-12-27
    • 2023-03-24
    相关资源
    最近更新 更多