ПРИМЕЧАНИЕ. Я не делаю ничего похожего на установщик Topshelf требует, чтобы я дважды нажимал клавишу ВВОД - почему?
Класс обслуживания (интересные детали):
public class ServiceCore
{
public ServiceCore(ServiceRuntimeConfiguration serviceRuntimeConfiguration)
{
_runningTasks = new List<Task>();
}
public bool Start(HostControl hostControl)
{
_hostControl = hostControl;
_messageProcessor.Start(); // Starts a System.Threading.Tasks.Task
StartListener(); // starts a System.Threading.Tasks.Task
return true;
}
}
Program.cs:
Host host = HostFactory.New(configurator =>
{
configurator.UseNLog();
// Configure core service
configurator.Service<ServiceCore>(svc =>
{
svc.ConstructUsing(theService => new ServiceCore(_serviceRuntimeConfiguration));
svc.WhenStarted((svc, hostControl) => svc.Start(hostControl));
svc.WhenStopped((svc, hostControl) => svc.Stop(hostControl));
});
// Configure recovery params
configurator.EnableServiceRecovery(recoveryConfigurator =>
{
recoveryConfigurator.RestartService(0);
recoveryConfigurator.OnCrashOnly();
recoveryConfigurator.SetResetPeriod(1);
});
// Execute HostConfigurator
host.Run();
}
Проблема
Когда я это сделаю:
MyService.exe install --manual --localsystem
Служба устанавливается нормально, но команда никогда не возвращает:
Запуск транзакционной установки.
Начало этапа установки. Установка службы NotificationEngine.Main ... Служба NotificationEngine.Main успешно установлена.
Фаза установки завершена успешно, и начинается фаза фиксации.
Фаза фиксации завершена успешно.
Транзакционная установка завершена.
^ C (мне нужно нажать CTRL + C)
Что мне нужно сделать, чтобы команда установки завершилась и вернулась?
ПРИМЕЧАНИЕ. Такое же поведение наблюдается, если я запускаю справку (т.е. справка отображается, но команда не возвращается):
MyService.exe help