2009-12-07 2 views
0

В настоящее время у меня есть служба WCF, которая использует COM-библиотеку для ее обслуживания. COM-объект загружается только один раз и сохраняется через одноэлемент. Проблема заключается в том, что первый запуск занимает около 1 минуты для загрузки COM-объекта. Служба WCF размещается через службу Windows. Мне интересно, как я могу загрузить одиночный объект COM-объекта при запуске службы Windows.Код запуска для загрузки COM-объекта для службы WCF

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

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

    objectConn.getInstance() 
} 

Когда я пытаюсь добавить загрузку Singleton в OnStart запуска Windows Service, он всегда терпит неудачу. Я хотел бы спросить, действительно ли это, чтобы добавить процедуру запуска для экземпляра objectConn. Я попытался разместить загрузку singleton в диспетчере MyService, но он вызывается только при первом вызове операции/метода веб-службы, которую я вызываю, что делает первый вызов службы неудобным.

Я читал о DependencyInjection, но я думаю, что добавленное поведение неприменимо, так как я просто хочу загрузить объект COM-объекта один раз.

ответ

1

Вы, вероятно, может сделать это, - но я бы рекомендовал делать это перед вызовом

host.Open() 

. Этот вызов объединяет всю среду выполнения WCF и все такое, и я предпочел бы выполнять все задачи инициализации до этого, если это вообще возможно.

Marc

Смежные вопросы