Maison > développement back-end > C++ > Comment puis-je intégrer le code de service directement dans une application console .NET ?

Comment puis-je intégrer le code de service directement dans une application console .NET ?

Patricia Arquette
Libérer: 2024-12-31 12:30:10
original
473 Les gens l'ont consulté

How Can I Integrate Service Code Directly into a .NET Console Application?

Intégrer le code de service dans une application console .NET

Comment transformer une application console en un service Windows sans ajouter un projet distinct ?

Solution :

Vous pouvez intégrer de manière transparente le code de service dans votre console application pour lui permettre de s'exécuter à la fois en tant qu'application console et en tant que service. Considérez la technique suivante :

using System.ServiceProcess;

public static class Program
{
    const string ServiceName = "MyService";

    public class Service : ServiceBase
    {
        public Service()
        {
            ServiceName = Program.ServiceName;
        }

        protected override void OnStart(string[] args)
        {
            Program.Start(args);
        }

        protected override void OnStop()
        {
            Program.Stop();
        }
    }

    static void Main(string[] args)
    {
        if (!Environment.UserInteractive)
        {
            // Running as service
            using (var service = new Service())
                ServiceBase.Run(service);
        }
        else
        {
            // Running as console app
            Start(args);
            Console.WriteLine("Press any key to stop...");
            Console.ReadKey(true);
            Stop();
        }
    }

    private static void Start(string[] args)
    {
        // OnStart code here
    }

    private static void Stop()
    {
        // OnStop code here
    }
}
Copier après la connexion

Explication :

  • La propriété Environment.UserInteractive est généralement vraie pour les applications de console et fausse pour les services.
  • En vérifiant cette propriété, le code détermine s'il doit exécuter l'application en tant que service ou en tant qu'application console. Lorsqu'elle n'est pas exécutée en tant que service, l'application passe en mode console, lisant les entrées et affichant la sortie.
  • Le code du service réside dans une classe Service imbriquée qui hérite de ServiceBase.
  • OnStart et OnStop les méthodes sont remplacées pour gérer respectivement le démarrage et l'arrêt du service.
  • Dans Main, la méthode ServiceBase.Run est utilisée pour exécuter le service dans un autre thread, garantissant que le programme reste réactif.
  • Qu'elles soient exécutées en tant qu'application console ou en tant que service, les méthodes Start et Stop fournissent les fonctionnalités nécessaires à la gestion de l'exécution de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal