Exécuter une application console .NET en tant que service Windows
L'utilisation d'applications console en tant que services Windows offre un avantage en consolidant le code dans un seul projet. Cela permet à l'application de fonctionner à la fois comme une application console et comme un service. Voici une approche courante pour y parvenir :
Extrait de code
using System.ServiceProcess;
public static class Program
{
public const string ServiceName = "MyService";
public class Service : ServiceBase
{
public Service()
{
ServiceName = Program.ServiceName;
}
protected override void OnStart(string[] args) {
Program.Start(args);
}
...
private static void Start(string[] args)
{
// onstart code here
}
private static void Stop()
{
// onstop code here
}
}
Implémentation
- Définir une classe statique appelée Programme pour servir de point d'entrée à l'application .
- Créez une classe imbriquée Service qui hérite de ServiceBase, représentant le Windows service.
- Dans la méthode Main, utilisez Environment.UserInteractive pour déterminer si l'application s'exécute en tant qu'application console ou service. True indique le mode console, tandis que false indique le mode service.
- Lors de l'exécution en tant que service (c'est-à-dire que Environment.UserInteractive est faux), créez une nouvelle instance de service et exécutez-la à l'aide de ServiceBase.Run.
- Pour le mode console (c'est-à-dire que Environment.UserInteractive est vrai), exécutez le code d'une application console, avec des instructions pour s'arrêter lorsqu'une clé est enfoncé.
- Inclure des méthodes telles que Start et Stop pour gérer les opérations spécifiques au service.
Avantages
Cette technique présente les avantages suivants :
- Il maintient un projet unique pour les fonctionnalités de la console et du service.
- Il simplifie la maintenance et gestion.
- Il permet de basculer facilement entre les modes console et service à l'aide d'arguments de ligne de commande.
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!
Déclaration: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