Debugando Windows Service

Hoje vou ensinar uma forma para debugar windows service.

Ao criarmos um projeto do tipo WindowsService não conseguimos debugar normalmente como qualquer outro tipo de projeto, porem temos uma forma bem simples para contornar esse problema.

Primeiramente devemos criar uma condição na classe Program.cs para identificar se o nosso projeto foi executado em modo de Debug para redirecionarmos a chamada.

Program.cs

?View Code CSHARP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        static void Main()
        {
 
            if (System.Diagnostics.Debugger.IsAttached)
            {
                MeuServico service = new MeuServico();
                service.StartDebug(new string[2]);
                System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
 
            }
            else
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] { new MeuServico() };
                ServiceBase.Run(ServicesToRun);
            }
 
        }

Apos feito isso, basta editar a classe do nosso serviço e adicionar um método StartDebug como no exemplo abaixo.

No service:

?View Code CSHARP
1
2
3
4
        public void StartDebug(string[] args)
        {
            OnStart(args);
        }

Como o Método OnStarde é do tipo protected criamos esse novo método publico para redirecionar a chamada.

Pronto! já podemos debugar nosso projeto normalmente sem nenhum problema.
[]s

Um comentário em “Debugando Windows Service

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *