private void InitializeService()

in SimpleRemoteConsole/ServiceInterop/Service.cs [328:378]


        private void InitializeService(int argc, IntPtr argv)
        {
            logger.Info("Begin service initialization.");

            hSvcStatus = NativeServiceWrapper.RegisterServiceCtrlHandlerExW(serviceName, svcCtrlHandler, IntPtr.Zero);
            if (hSvcStatus == IntPtr.Zero)
            {
                var error = Marshal.GetLastWin32Error();
                var errorMsg = "Could not register service control handler. Error: " + error;
                logger.Error("Initialize service failed: " + errorMsg);
                throw new Win32Exception(error, errorMsg);
            }
            
            ReportSvcStatus(CurrentState.SERVICE_START_PENDING, 0, 3000);

            Thread.Sleep(30000);
            var strArgs = "\"" + string.Join("\", \"", serviceArgs) + "\"";
            logger.Info("Initializing service with arguments: " + strArgs);

            var exitCode = 0;
            try
            {
                startHandler(serviceArgs);
                ReportSvcStatus(CurrentState.SERVICE_RUNNING, 0, 0);
                logger.Info("Service started successfully.");
                stopEvent.WaitOne();
            }
            catch (Exception e)
            {
                exitCode = -1;
                ReportSvcStatus(CurrentState.SERVICE_STOPPED, exitCode, 0);
                logger.Error("Exception thrown from service start handler: " + e.Message);
                return;
            }

            logger.Info("Stopping service.");
            ReportSvcStatus(CurrentState.SERVICE_STOP_PENDING, 0, 3000);

            try
            {
                stopHandler();
            }
            catch (Exception e)
            {
                exitCode = -1;
                logger.Error("Exception thrown from service stop handler: " + e.Message);
            }

            ReportSvcStatus(CurrentState.SERVICE_STOPPED, exitCode, 0);
            logger.Info("Service stopped successfully.");
        }