我目前有一个使用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对象源一次。
答案 0 :(得分:1)
您可以这样做 - 但我建议您在
之前完成此操作host.Open()
呼叫。这个调用会旋转整个WCF运行时和所有内容,我希望在此之前完成所有初始化任务,如果可能的话。
马克