Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Problema con il test di un servizio Windows

Puoi sempre creare un servizio ibrido/app console e utilizzare l'app console a scopo di test.

Quello che devi fare è qualcosa del genere, nel tuo program.cs , cambia il Main metodo per eseguire il servizio o, facoltativamente, come app 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);
        }
    }

e poi sulla tua classe di servizio, che eredita da ServiceBase e ha il OnStart e OnStop , aggiungi il RunConsole metodo in questo modo:

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

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

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

        OnStop();
    }

Ora se vuoi eseguire l'app per testarne la funzionalità, avvia l'EXE con una -console parametro della riga di comando e inserire un punto di interruzione in RunConsole metodo.