用于加载WCF服务的COM对象的启动代码

时间:2009-12-07 03:51:33

标签: wcf windows-services comobject

我目前有一个使用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对象源一次。

1 个答案:

答案 0 :(得分:1)

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

之前完成此操作
host.Open()

呼叫。这个调用会旋转整个WCF运行时和所有内容,我希望在此之前完成所有初始化任务,如果可能的话。

马克