Команда установки Topshelf не возвращается

Я использую Topshelf v3.1 для установки моего консольного приложения в качестве службы Windows. Я устанавливаю консоль через командную строку, например: myconsole install

Все кажется хорошим, за исключением того, что команда кажется никогда не завершенной, я имею в виду, что обычно после выполнения команды консоль командной строки возвращается в состояние, в котором вы можете снова ввести другую команду. Каким-то образом команда topshelf останавливается в последней точке, поэтому я должен нажать Ctrl + C, чтобы убить команду.

Мой код ниже:

class Program
    {
        static void Main(string[] args)
        {
            //HostFactory.Run(x =>
            //{
            //    x.Service<DummyService>(s =>
            //    {
            //        s.ConstructUsing(name => new DummyService());
            //        s.WhenStarted(tc => { });
            //        s.WhenStopped(tc => { });
            //    });

            //    x.RunAsLocalSystem();
            //    x.SetDescription("DummyService1");
            //    x.SetDisplayName("DummyService2");
            //    x.SetServiceName("DummyService3");
            //    x.StartAutomatically();
            //});
            var service = new DummyService();
            service.Run();            
        }
}

Так или иначе, если я раскомментирую блок, который я закомментировал выше, и закомментирую последние 2 строки в методе Main. Затем я снова запускаю команду, она волшебным образом работает.

PS: метод DummyService.Run просто оборачивает закомментированный блок кода. По сути, они одинаковы.

Есть идеи?

Приветствия, Ld

1 ответ

Topshelf для запуска сервисов. Это ожидаемое поведение. Служба должна работать непрерывно (до отправки команды остановки), как обычно работают службы Windows. В командной строке вам нужно CTRL+C, чтобы сигнализировать об окончании службы.

Если вы хотите выполнить только команду, Topshelf - неправильный способ сделать это. Topshelf позволяет вам запускать службу в обычном режиме в виде командной строки как простой способ отладки служб.

Другие вопросы по тегам