Timer em um Windows Service?

Hoje vou postar uma solução para o problema do Timer em um windows service.
O problema é que o Timer simplesmente não funciona. Legal, não? 🙂

Pois é. Precisei criar um serviço de monitoração e, para isso, utilizei o Timer para que o monitoramento fosse executado no período especificado.

O processo de adição do Timer é o que nós já conhecemos: Arrastar o controle “Timer” da aba “Components” da Toolbox.

O problema é que o serviço ignorava o Timer e a monitoração não era realizada.

Pesquisando na internet, descobri que algumas pessoas passaram pelo mesmo problema.

Das soluções propostas, segue a mais simples e que, de fato, funciona:

Primeiro: Exclua o Timer que você já havia adicionado. 🙂

Declare o objeto privado oTimer:
Private oTimer As System.Threading.Timer

No envento On_Start do seu serviço adicione o seguinte código:

Dim oCallback As New TimerCallback(AddressOf OnTimedEvent)
oTimer = New System.Threading.Timer(oCallback, Nothing, 60000, 60000)

Em seguida crie o método OnTimedEvent e implemente o código que desejar que seja executada em cada “Tick” do timer.

Private Sub OnTimedEvent(ByVal state As Object)
‘Adicione aqui seu código
End Sub

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s