[英]Restarting a c# TopShelf service programmatically
我发现自己处于一个糟糕的境地,我有一个使用带有内存问题的c ++库的topshelf服务。 由于我发现自己所处的这个地方,我想让TopShelf一次又一次地重新启动服务,暂停它的活动,除了“让世界再次正确”之外别无其他原因。
是否有任何TopShelf API允许这样做? 我似乎无法在文档中找到任何内容。
调用Environment.Exit(1);
当你想重启服务
然后在HostFactory中添加启用ServiceRecovery
HostFactory.Run(configure =>
{
configure.Service((ServiceConfigurator<Service> service) =>
{
service.WhenStarted(s => s.Start());
service.WhenStopped(s => s.Stop());
});
//Setup Account that window service use to run.
configure.RunAsNetworkService();
configure.SetServiceName("ServiceName");
configure.SetDisplayName("ServiceName");
configure.SetDescription("Description");
configure.StartAutomaticallyDelayed();
configure.EnableServiceRecovery(recoveryOption =>
{
recoveryOption.RestartService(0);
});
});
我确信Topshelf不支持这个,所以你必须自己从代码中做到这一点。
看一下ServiceController类。
最坏的情况是你可以有第二个简单的topshelf安装程序来管理你当前的服务并重新启动它? (我知道有点脏)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.