Procédure : écrire les services par programmation
Remarque
Cet article ne s’applique pas aux services hébergés dans .NET. Pour obtenir un contenu actualisé sur les services Windows utilisant Microsoft.Extensions.Hosting.BackgroundService et le modèle Service Worker, consultez :
Si vous choisissez de ne pas utiliser le modèle de projet Service Windows, vous pouvez écrire vos propres services en configurant vous-même l’héritage et d’autres éléments d’infrastructure. Quand vous créez un service par programmation, vous devez effectuer plusieurs étapes qui sont normalement gérées pour vous par le modèle :
Vous devez configurer votre classe de service pour qu’elle hérite de la classe ServiceBase.
Vous devez créer une méthode
Main
pour votre projet de service qui définit les services à exécuter et appelle la méthode Run sur ceux-ci.Vous devez substituer les procédures OnStart et OnStop et indiquer le code que vous souhaitez qu’elles exécutent.
Pour écrire un service par programmation
Créez un projet vide, puis une référence aux espaces de noms nécessaires. Pour cela, effectuez les étapes suivantes :
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud Références, puis cliquez sur Ajouter une référence.
Sous l’onglet .NET Framework, faites défiler jusqu’à System.dll, puis cliquez sur Sélectionner.
Faites défiler jusqu’à System.Diagnostics.dll, puis cliquez sur Sélectionner.
Cliquez sur OK.
Ajoutez une classe et configurez-la pour qu’elle hérite de ServiceBase :
public class UserService1 : ServiceBase { }
Public Class UserService1 Inherits System.ServiceProcess.ServiceBase End Class
Ajoutez le code suivant pour configurer votre classe de service :
public UserService1() { ServiceName = "MyService2"; CanStop = true; CanPauseAndContinue = true; AutoLog = true; }
Public Sub New() Me.ServiceName = "MyService2" Me.CanStop = True Me.CanPauseAndContinue = True Me.AutoLog = True End Sub
Créez une méthode
Main
pour votre classe, et utilisez-la pour définir le service qui sera contenu dans votre classe.userService1
est le nom de la classe :public static void Main() { ServiceBase.Run(new UserService1()); }
Shared Sub Main() System.ServiceProcess.ServiceBase.Run(New UserService1) End Sub
Substituez la méthode OnStart, et définissez le traitement qui doit se produire au démarrage de votre service.
protected override void OnStart(string[] args) { // Insert code here to define processing. }
Protected Overrides Sub OnStart(ByVal args() As String) ' Insert code here to define processing. End Sub
Substituez les autres méthodes pour lesquelles vous souhaitez définir un traitement personnalisé, et écrivez le code nécessaire pour déterminer les actions que le service doit prendre dans chaque cas.
Ajoutez les programmes d'installation nécessaires à votre application de service. Pour plus d’informations, consultez Guide pratique pour ajouter des programmes d’installation à votre application de service.
Générez votre projet en sélectionnant Générer la solution dans le menu Générer.
Notes
N'appuyez pas sur la touche F5 pour exécuter votre projet : vous ne pouvez pas exécuter un projet de service de cette manière.
Créez un projet d’installation et les actions personnalisées pour installer votre service. Pour obtenir un exemple, consultez Procédure pas à pas : création d’une application de service Windows dans le Concepteur de composants.
Installez le service. Pour plus d'informations, consultez How to: Install and Uninstall Services.
Voir aussi
- Introduction aux applications de service Windows
- Procédure : créer des services Windows
- Procédure : ajouter des programmes d’installation à votre application de service
- Procédure : enregistrer des informations relatives aux services
- Procédure pas à pas : création d’une application de service Windows dans le Concepteur de composants