Команда установки верхней полки не возвращается

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

Все выглядит хорошо, за исключением того, что команда кажется никогда не завершенной, я имею в виду, что обычно после выполнения команды консоль командной строки возвращается в состояние, в котором вы можете снова ввести другую команду. Каким-то образом команда topshelf останавливается в последней точке, поэтому мне нужно нажать Control + 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 просто оборачивает закомментированный блок кода. По сути, они одинаковы.

Любые идеи?

Ура, Лд.


person ldsenow    schedule 05.03.2013    source источник


Ответы (1)


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

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

person Travis    schedule 05.03.2013