2

我正在使用 Topshelf 来托管 Windows 服务。我希望让托管服务调用以在某些事件时重新启动。我想知道如何实现这一目标?

谢谢,本

4

2 回答 2

2

Environment.Exit(1);当你想重启服务时打电话

然后在 HostFactory 添加 Enable 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);
                });

            });
于 2018-12-06T09:36:44.990 回答
1

如果您知道调用重启的服务名称,则可以使用服务管理器。它可能会或可能不会从自身调用。这不是 Topshelf 公开的事情,所以你自己来做。

于 2013-11-06T14:58:03.160 回答