Salut à tous ;
Aujourd’hui je vous montre comment exécuter et déboguer votre projet de service Windows comme n’importe quel projet Console ou WPF…
Quand vous crée un projet de type service Windows, Visual studio ne vous donne pas la possibilité de l’exécuter directement, il vous demandera de l’installer avec « installutil » puis le démarrer via la commande « Net START ». Ce n’est pas vraiment sympa surtout pour faire des tests rapides de notre bout de code.
Nous allons utiliser une astuce très simple pour pouvoir déboguer notre code, tout d’abord nous allons créer une méthode « onDebug » dans notre classe service « BlogWindowsService.cs », cette méthode aura pour but de lancer la méthode « onStart » du service :
1 2 3 4 |
public void onDebug() { OnStart(null); } |
Ensuite dans notre programme principal « Program.cs » nous allons modifier un peu le lancement du service, nous allons ajouter une directive de préprocesseur pour séparer le code lancer lors du « Debug » et lors du « Release » :
1 2 3 4 5 6 7 8 9 10 11 12 |
#if DEBUG BlogWindowsService blogWindowsService = new BlogWindowsService(); blogWindowsService.onDebug(); System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); #else ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new BlogWindowsService() }; ServiceBase.Run(ServicesToRun); #endif |
Lorsque on passe à la compilation « Release » Visual Studio met en évidence le code initial du service :
Testons notre code !!
Et voilà !!! grâce à cette petite astuce nous pouvons déboguer notre service comme n’importe quel projet C#.
So, what do you think ?