Код запуска для загрузки COM-объекта для службы WCF

StackOverflow https://stackoverflow.com/questions/1857705

  •  13-09-2019
  •  | 
  •  

Вопрос

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

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

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

    objectConn.getInstance()
}

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

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

Это было полезно?

Решение

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

host.Open()

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

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top