HostFactory.Run(x =>
{
x.EnableShutdown();
x.EnableServiceRecovery(configurator =>
{
configurator.RestartService(0);
configurator.RestartService(0);
configurator.RestartService(0);
});
x.Service<IWorkerHost>(s =>
{
s.ConstructUsing(name => container.Resolve<IWorkerHost>());
s.WhenStarted(workerHost =>
{
if (onStart != null) onStart();
workerHost.Start();
});
s.WhenStopped(workerHost =>
{
workerHost.Stop();
if (onStop != null) onStop();
});
s.WhenShutdown(workerHost =>
{
workerHost.Shutdown();
if (onStop != null) onStop();
});
});
x.RunAsLocalSystem();
x.SetStartTimeout(new TimeSpan(0, 0, 2, 0));
x.SetDescription(String.Format("{0} ({1})", assemblyName, environment));
x.SetDisplayName(String.Format("{0} ({1})", assemblyName, environment));
x.SetServiceName(String.Format("{0}_{1}", assemblyName.Replace(".", ""), environment));
});
I have tried on multiple machines, both windows 10 and server 2016 and am using the latest version of topshelf (v4).