pen*_*ake 9 .net c# windows-services topshelf
正如TosShelf所说:
"You can only have ONE service! As of 3.x Topshelf the base product no longer support hosting multiple services. "
从版本3.x开始,我需要弄清楚如何集成新版本的Topshelf.
问题: 是否可以使用Topshelf从一个控制台应用程序启动多个单独的服务?我怎样才能做到这一点?
Jas*_*owe 12
Topshelf不再支持这一点,但可能的解决方法是实现一个类来启动多个服务.
例:
// ServiceManager is used to start and stop multiple services
hostConfigurator.Service<ServiceManager>(s =>
{
s.ConstructUsingNinject(); // service1 and service2 injected into ServiceManager
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
Run Code Online (Sandbox Code Playgroud)
然后,ServiceManager类将启动和停止多个服务.
public class ServiceManager
{
private readonly Service1 service1;
private readonly Service2 service2;
public ServiceManager(Service1 service1, Service2 service2)
{
this.service1= service1;
this.service2= service2;
}
public void Start()
{
service1.Start();
service2.Start();
}
public void Stop()
{
service1.Stop();
service2.Stop();
}
}
Run Code Online (Sandbox Code Playgroud)