예제 #1
0
        private static void Main()
        {
            XmlConfigurator.Configure();
            _log = LogManager.GetLogger(ServiceName);
            _log.InfoFormat("Starting service ...");

            _appName = System.Diagnostics.Process.GetCurrentProcess().ProcessName.Replace(".vshost", string.Empty);
            _displayName = _appName;
            _parameters = ParseCommandLine(Environment.CommandLine);

            //определяем комманду на удаление сервиса
            var isNeedRemoveService = _parameters.ContainsKey(ParamServiceNo);
            if (isNeedRemoveService)
            {
                RemoveService();
                return;
            }

            //определяем какой вид запуска (сервис или консоль)
            var runAsService = _parameters.ContainsKey(ParamService);

            //запуск приложения как сервиса
            if (runAsService)
            {
                // если сервиса нет - устанавливаем его и запускаем
                var sysService = GetInstalledService();
                if (sysService == null)
                {
                    sysService = CreateService();
                    sysService.Start();
                    return;
                }

                // если сервис есть - запускаем логику
                var svc = new SchedulerHost(new ServiceContext(_parameters));
                ServiceBase.Run(svc);
            }
            //запуск в режиме консольного приложения
            else
            {
                var app = new SchedulerHost(new ServiceContext(_parameters));
                try
                {
                    app.Start(null);

                    _log.Info("Press escape to exit");
                    ConsoleKeyInfo keyInfo;
                    do keyInfo = Console.ReadKey(); while (keyInfo.Key != ConsoleKey.Escape);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Fatal error: {0}", ex);
                    Console.WriteLine("Press a key to exit");
                    Console.ReadKey();
                }
                finally
                {
                    app.Stop();
                }
            }
        }
예제 #2
0
        private static void Main()
        {
            XmlConfigurator.Configure();
            _log = LogManager.GetLogger(ServiceName);
            _log.InfoFormat("Starting service ...");

            _appName     = System.Diagnostics.Process.GetCurrentProcess().ProcessName.Replace(".vshost", string.Empty);
            _displayName = _appName;
            _parameters  = ParseCommandLine(Environment.CommandLine);

            //определяем комманду на удаление сервиса
            var isNeedRemoveService = _parameters.ContainsKey(ParamServiceNo);

            if (isNeedRemoveService)
            {
                RemoveService();
                return;
            }

            //определяем какой вид запуска (сервис или консоль)
            var runAsService = _parameters.ContainsKey(ParamService);

            //запуск приложения как сервиса
            if (runAsService)
            {
                // если сервиса нет - устанавливаем его и запускаем
                var sysService = GetInstalledService();
                if (sysService == null)
                {
                    sysService = CreateService();
                    sysService.Start();
                    return;
                }

                // если сервис есть - запускаем логику
                var svc = new SchedulerHost(new ServiceContext(_parameters));
                ServiceBase.Run(svc);
            }
            //запуск в режиме консольного приложения
            else
            {
                var app = new SchedulerHost(new ServiceContext(_parameters));
                try
                {
                    app.Start(null);

                    _log.Info("Press escape to exit");
                    ConsoleKeyInfo keyInfo;
                    do
                    {
                        keyInfo = Console.ReadKey();
                    } while (keyInfo.Key != ConsoleKey.Escape);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Fatal error: {0}", ex);
                    Console.WriteLine("Press a key to exit");
                    Console.ReadKey();
                }
                finally
                {
                    app.Stop();
                }
            }
        }