.net 6 Console App As Windows Service

5 min read Jun 03, 2024
.net 6 Console App As Windows Service

Créer une application console .NET 6 en tant que service Windows

Introduction

Cet article vous guidera à travers les étapes de la création d'une application console .NET 6 qui s'exécute en tant que service Windows. Cette approche est utile lorsque vous avez besoin qu'une application s'exécute en arrière-plan, indépendamment de toute session utilisateur, et qu'elle puisse démarrer automatiquement au démarrage de l'ordinateur.

Configuration de l'application console .NET 6

  1. Créer un nouveau projet: Ouvrez Visual Studio et créez un nouveau projet. Sélectionnez Application console (.NET 6) et donnez-lui un nom.
  2. Écrire le code de l'application: Ajoutez le code de l'application console dans le fichier Program.cs. Par exemple, vous pouvez inclure une boucle infinie qui s'exécute à intervalles réguliers et effectue une tâche spécifique.
using System;
using System.Threading;

namespace MyConsoleService
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Service Windows démarré.");

            while (true)
            {
                // Code à exécuter à intervalles réguliers
                Console.WriteLine("Exécution de la tâche...");
                Thread.Sleep(5000); // Pause de 5 secondes
            }
        }
    }
}

Créer le service Windows

  1. Installer le package NuGet: Dans le gestionnaire de packages NuGet, installez le package Microsoft.Extensions.Hosting.WindowsServices:
Install-Package Microsoft.Extensions.Hosting.WindowsServices
  1. Modifier le code: Modifiez le code de l'application pour qu'elle utilise l'interface IHost et le type WindowsServiceLifetime.
using Microsoft.Extensions.Hosting;
using System;
using System.Threading;

namespace MyConsoleService
{
    class Program
    {
        static void Main(string[] args)
        {
            // Créer l'hôte de l'application
            IHost host = Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    // Ajouter le service Windows
                    services.AddHostedService();
                })
                .UseWindowsService() // Indique que l'application est un service Windows
                .Build();

            // Exécuter l'application
            host.Run();
        }
    }

    public class MyWindowsService : IHostedService
    {
        public Task StartAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("Service Windows démarré.");
            // Code à exécuter lors du démarrage du service
            return Task.CompletedTask;
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("Service Windows arrêté.");
            // Code à exécuter lors de l'arrêt du service
            return Task.CompletedTask;
        }
    }
}
  1. Compiler l'application: Compilez l'application en utilisant la commande dotnet publish ou en utilisant Visual Studio.

Installer le service Windows

  1. Ouvrir l'invite de commandes: Ouvrez une invite de commandes avec des privilèges d'administrateur.
  2. Installer le service: Naviguez vers le répertoire de publication de l'application et exécutez la commande suivante:
sc create MyConsoleService binPath= "chemin_vers_l'exécutable.exe"

Remplacez MyConsoleService par le nom de votre service et chemin_vers_l'exécutable.exe par le chemin complet vers l'exécutable de votre application.

Démarrer et gérer le service Windows

  1. Démarrer le service: Exécutez la commande suivante pour démarrer le service:
sc start MyConsoleService
  1. Arrêter le service: Exécutez la commande suivante pour arrêter le service:
sc stop MyConsoleService
  1. Gérer le service: Utilisez l'outil services.msc pour gérer le service, y compris le démarrage automatique, les dépendances et d'autres options.

Conclusion

En suivant ces étapes, vous pouvez facilement créer une application console .NET 6 qui s'exécute en tant que service Windows. Cette approche vous permet de créer des applications qui s'exécutent en arrière-plan et qui peuvent être gérées facilement via les outils de gestion des services Windows.

Mots-clés: .NET 6, application console, service Windows, IHostedService, Microsoft.Extensions.Hosting.WindowsServices