Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Problema ao testar um serviço do Windows


Você sempre pode criar um híbrido de serviço/aplicativo de console e usar o aplicativo de console para fins de teste.

O que você precisa fazer é algo assim - em seu program.cs , altere o Main para executar o serviço ou, opcionalmente, como um aplicativo de 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 depois em sua classe de serviço, que herda de ServiceBase e tem o OnStart e OnStop , adicione o RunConsole método assim:
    public void RunConsole(string[] args)
    {
        OnStart(args);

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

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

        OnStop();
    }

Agora, se você deseja executar o aplicativo para testar sua funcionalidade, basta iniciar o EXE com um -console parâmetro de linha de comando e coloque um ponto de interrupção no RunConsole método.