Le nouvel emplacement de Topshelf, http://github.com/Topshelf/Topshelf, a été mis à jour avec un patch permettant ce comportement.
RunConfiguration cfg = RunnerConfigurator.New(x =>
{
x.AfterStoppingTheHost(h => { Console.WriteLine("AfterStop called invoked, services are stopping"); });
x.ConfigureService<TownCrier>(s =>
{
s.Named("tc");
s.HowToBuildService(name=> new TownCrier());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
// Running as the network service account
x.RunAsNetworkService();
x.SetDescription("Sample Topshelf Host");
x.SetDisplayName("Stuff");
x.SetServiceName("stuff");
});
Runner.Host(cfg, args);
Vous pouvez également remplacer la configuration à l'aide des options de ligne de commande, tels que --networkservice, --localservice ou --interactive à un nom d'utilisateur invité à entrer/mot de passe lors de l'installation du service. –