Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Problème de test d'un service Windows

Vous pouvez toujours créer un hybride service/application console et utiliser l'application console à des fins de test.

Ce que vous devez faire est quelque chose comme ça - dans votre program.cs , modifiez le Main pour exécuter le service ou éventuellement l'exécuter en tant qu'application console :

static class Program
{
    static void Main(params string[] args)
    {
        string firstArgument = string.Empty;

        if (args.Length > 0)
        {
            firstArgument = args[0].ToLowerInvariant();
        }

        if (string.Compare(firstArgument, "-console", true) == 0)
        {
            new YourServiceClass().RunConsole(args);
        }
        else
        {
            ServiceBase[] ServicesToRun = new ServiceBase[] { new YourServiceClass() };
            ServiceBase.Run(ServicesToRun);
        }
    }

puis sur votre classe de service, qui hérite de ServiceBase et a le OnStart et OnStop , ajoutez le RunConsole méthode comme ceci :

    public void RunConsole(string[] args)
    {
        OnStart(args);

        Console.WriteLine("Service running ... press <ENTER> to stop");

        //Console.ReadLine();
        while (true)
        { }

        OnStop();
    }

Maintenant, si vous voulez exécuter l'application pour tester ses fonctionnalités, lancez simplement l'EXE avec une -console paramètre de ligne de commande et placez un point d'arrêt dans RunConsole méthode.