Question

Je suis actuellement avoir un service WCF qui utilise une DLL COM pour son service. L'objet COM est chargé une seule fois et enregistré par un singleton. Le problème est la première course prend environ 1 minute pour charger l'objet COM. Le service WCF est hébergé par un service Windows. Je me demande comment puis-je charger le singleton de l'objet COM via le démarrage du service Windows.

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

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

    objectConn.getInstance()
}

Lorsque je tente d'ajouter la charge du Singleton dans le OnStart du démarrage du service Windows, il échoue toujours. Je voudrais demander si ce que je la bonne façon d'ajouter la routine de démarrage pour l'instance objectConn. J'ai essayé de placer le chargement singleton dans le construtor MyService mais il est seulement appelé le premier appel à l'opération de service Web / méthode que j'invoque ce qui en fait le premier appel de service maladroit.

Je l'ai lu mais je pense que injection de dépendances le comportement ajouté n'est pas applicable puisque je veux juste charger une fois que la source de l'objet COM.

Était-ce utile?

La solution

Vous pouvez probablement le faire - mais je vous recommande de le faire avant la balise

host.Open()

appel. Cet appel tourne le runtime complet WCF et tout, et je préférerais faire toutes les tâches d'initialisation avant que, si cela est possible.

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top