sábado, 27 de fevereiro de 2010

Utilizando Timer em um Windows Service

Fala, galera!!

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


Um abraço e até a próxima!!

5 comentários:

  1. Parabéns pelo código, funciona perfeitamente

    ResponderExcluir
  2. muito bom!!!! salvou a minha manhã!!! hehehe!!!

    ResponderExcluir
  3. Muuuuuuuuito bom, ganhei o final de semana...estava brigando com esse timer a um bom tempo!

    ResponderExcluir
  4. Cara, valeu - ja tem mais de um ano esse post parem me ajudou mesmo

    ResponderExcluir
  5. Cara,
    Mais um ano se passou e o post continua atual.
    Grato!

    ResponderExcluir