2009-03-13 7 views
1

Je dispose d'un projet d'installation de services unique qui installe plusieurs services. C'est génial, mais une seule exception non gérée dans un seul service va arrêter tous les services qui ont été installés par ce programme d'installation.Services Windows multiples, un seul programme d'installation, suppression des dépendances

Le code pour l'installateur ressemble à quelque chose comme ça

ServiceBase[] ServicesToRun; 

ServicesToRun = new ServiceBase[] 
{ 
    new Service1() , 
    new Service2() , 
    ... 
}; 

ServiceBase.Run(ServicesToRun); 

Ainsi, une fois que le service est installé, je peux voir plusieurs services distincts dans les fenêtres fenêtre de gestion des services et chacun peut être démarré, arrêté, mis en pause, a repris indépendamment . Cependant, si l'un d'entre eux souffre d'une exception non gérée, ils s'arrêtent tous.

Idéalement, seul le service qui avait le problème s'arrêterait et les autres services continueraient leur chemin.

Quelqu'un peut-il suggérer un moyen de le faire sans créer un projet d'installation vraiment distinct pour chaque service?

+0

chaque service s'exécute dans son propre thread distinct btw. – mjallday

Répondre

1

Ajouter un traitement d'erreur indépendant par service au niveau le plus élevé, de sorte que tous les services ne seront pas effectués.

Vous pouvez également ajouter un redémarrage du service automatique si l'erreur n'est pas critique. Assurez-vous simplement d'ajouter des tonnes de journalisation dans le cas des arrêts de service et redémarre à partir d'erreurs.

+0

Je voudrais faire ceci mais nous utilisons le contrôleur de service de Windows pour exécuter des manuscrits et indiquer quand les services meurent. à cause de cela je voudrais laisser les erreurs se produire "naturellement". merci tho – mjallday

+0

Je suppose que je suis un peu confus, sans erreur de manipulation, si l'un des services bombe, l'ensemble de l'ensemble bombardera. –

+0

Je vais vous évaluer pour le commentaire alors. S'il n'est pas possible d'éviter que l'assemblage ne meure s'il y a une exception, je suppose que je vais devoir créer des services vraiment distincts. Merci – mjallday

Questions connexes