Search code examples
c#.nettopshelf

Restarting self in a Topshelf service


I'm using Topshelf to host a Windows service. I am looking to get the hosted service to call to have itself restarted upon certain events. I was wondering how to achieve this?

Thanks, Ben


Solution

  • call Environment.Exit(1); when u want restart service

    then in HostFactory add 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);
                    });
    
                });