示例#1
0
        /// <summary>
        /// Démarre le service depuis le gestionnaire de services.
        /// </summary>
        /// <param name="serviceType"></param>
        private static void RunService(Type serviceType)
        {
            try
            {
                TraceServiceStart(serviceType, "Service");
                try
                {
                    DebuggableService service = new DebuggableService(serviceType);
                    service.ServiceName = serviceType.ToString();
                    try
                    {
                        ServiceBase.Run(new ServiceBase[] { service });
                    }
                    catch (Exception e)
                    {
                        log.Error("# Arrêt du service suite à une erreur non gérée.", e);
                        service.Crash(e);
                    }
                }
                catch (Exception e)
                {
                    log.Error("# Arrêt du service: Impossible d'initialiser l'instance.", e);
                }

                TraceServiceStop(serviceType);
            }
            catch (Exception e)
            {
                string message =
                    "#------------------------------------------" + Environment.NewLine +
                    "# Une erreur non gérée a interrompu le démarrage du service." + Environment.NewLine +
                    "#   Service : " + serviceType.ToString() + " [" + Application.ExecutablePath + "]" + Environment.NewLine +
                    e.ToString() + Environment.NewLine +
                    "#------------------------------------------";
                EventLog eventLog = new EventLog();
                eventLog.Source = Path.GetFileNameWithoutExtension(Application.ExecutablePath);
                eventLog.Log = "Application";
                eventLog.WriteEntry(message, EventLogEntryType.Error);
            }
        }
示例#2
0
        /// <summary>
        /// Démarre le service depuis la console (en mode debug)
        /// </summary>
        /// <param name="serviceType"></param>
        private static void RunDebug(Type serviceType)
        {
            try
            {
                TraceServiceStart(serviceType, "Debug");
                try
                {
                    DebuggableService service = new DebuggableService(serviceType);
                    service.ServiceName = serviceType.ToString();
                    try
                    {
                        service.StartDebug();

                        Console.TreatControlCAsInput = true;
                        while (true)
                        {
                            if (Console.KeyAvailable)
                            {
                                ConsoleKeyInfo cki = Console.ReadKey(true);
                                if ((cki.Key == ConsoleKey.C) && ((cki.Modifiers & ConsoleModifiers.Control) != 0))
                                {
                                    log.Info("Control-C intercepté...");
                                    service.StopDebug();
                                }
                            }
                            else
                            {
                                if (service.WaitForEnding(TimeSpan.FromMilliseconds(200))) break;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        log.Error("# Arrêt du service suite à une erreur non gérée.", e);
                        service.Crash(e);
                    }
                }
                catch (Exception e)
                {
                    log.Error("# Arrêt du service: Impossible d'initialiser l'instance.", e);
                }

                TraceServiceStop(serviceType);
            }
            catch (Exception e)
            {
                string message =
                    "#------------------------------------------" + Environment.NewLine +
                    "# Une erreur non gérée a interrompu le démarrage du service." + Environment.NewLine +
                    "#   Service : " + serviceType.ToString() + " [" + Application.ExecutablePath + "]" + Environment.NewLine +
                    e.ToString() + Environment.NewLine +
                    "#------------------------------------------";
            }
        }