Je pense que vous voudriez créer un modèle de sous-service où l'on pourrait démarrer n'importe quel nombre de sous-services à partir du service Windows principal.
Alors peut-être une base filetée classe de service ..
public abstract class ThreadedService : ISubService
{
private Thread m_thread;
private ThreadedService()
{
m_thread = new Thread(new ThreadStart(StartThread));
}
// implement the interface
}
Configurer vos services par le app.config et un IConfigurationSectionHandler ...
public class ServiceConfigurationHandler : IConfigurationSectionHandler
{
public ServiceConfigurationHandler() { }
public object Create(object parent, object configContext, XmlNode section)
{
return new ServiceConfiguration((XmlElement)section);
}
}
Quelque chose à gérer les sections de configuration ...
public class ServiceConfiguration
{
public static readonly ServiceConfiguration Current = (ServiceConfiguration)ConfigurationManager.GetSection("me/services");
private List<ISubService> m_services;
private string m_serviceName;
internal ServiceConfiguration(XmlElement xmlSection)
{
// loop through the config and initialize the services
// service = createinstance(type)..kind of deal
// m_services.Add(service);
}
public void Start()
{
foreach(ISubService service in m_services) { service.Start(); }
}
public void Stop() { ... }
}
alors vous suffit de créer mais de nombreuses classes à base de threadedservice dont vous avez besoin pour vos sous-services, et de les jeter tous dans le app.config ... quelque chose comme ..
<me>
<services>
<service type="my.library.service1,my.library" />
<service type="my.library.service2,my.library" />
</services>
</me>
et enfin, dans votre code de service réel, il suffit de faire ServiceConfiguration.Current.Start() au début, et Service.Configuration.Current.Stop() dans la sortie.
Espérons que ça aide!
Recherchez-vous deux services Windows physiques distincts ou un service Windows qui remplit deux fonctions? – zac
A quoi ressemble votre Service1/Service2? Ils ont obtenu les deux méthodes OnStart et différents ServiceName? –
@Anders Yep. En fait, les deux vont commencer et fonctionner individuellement très bien. –