sql >> Base de Datos >  >> RDS >> Sqlserver

Problema con la prueba de un servicio de Windows

Siempre puede crear un híbrido de aplicación de servicio/consola y usar la aplicación de consola con fines de prueba.

Lo que debe hacer es algo como esto:en su program.cs , cambia el Main método para ejecutar el servicio u, opcionalmente, ejecutarlo como una aplicación de consola:

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);
        }
    }

y luego en su clase de servicio, que hereda de ServiceBase y tiene el OnStart y OnStop , agregue la RunConsole método así:

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

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

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

        OnStop();
    }

Ahora, si desea ejecutar la aplicación para probar su funcionalidad, simplemente inicie el EXE con una -console parámetro de línea de comando y coloque un punto de interrupción en RunConsole método.