0

我目前有一个使用 COM DLL 作为其服务的 WCF 服务。COM 对象只加载一次并通过单例保存。问题是第一次运行需要大约 1 分钟来加载 COM 对象。WCF 服务通过 Windows 服务托管。我想知道如何通过 Windows 服务的启动加载 COM 对象单例。

protected override void OnStart(string[] args)
{
    if (host != null)
    {
        host.Close();
    }

    Type serviceType = typeof(MyService);
    host = new ServiceHost(serviceType);
    host.Open();

    objectConn.getInstance()
}

当我尝试在 Windows 服务启动的 OnStart 中添加 Singleton 的负载时,它总是失败。我想问一下这是否是为 objectConn 实例添加启动例程的正确方法。我试图将单例加载放在 MyService 构造函数中,但它仅在第一次调用我调用的 Web 服务操作/方法时调用,这使得第一次服务调用很尴尬。

我阅读了有关 DependencyInjection 的信息,但我认为添加的行为不适用,因为我只想加载一次 COM 对象源。

4

1 回答 1

1

您可能可以这样做 - 但我建议您在

host.Open()

称呼。此调用启动整个 WCF 运行时和所有内容,如果可能的话,我更愿意在此之前完成所有初始化任务。

马克

于 2009-12-07T06:14:36.073 回答