Toon posts:

[.net]Timer in Windows Service stopt na aantal dagen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Windows Service gemaakt die om de minuut records uit een database gehaalt en deze verwerkt in emailtjes. De klasse's die dit verzorgen werken uitstekend.

Het gaat allemaal goed de eerste paar dagen. Daarna voert de service ineens niks meer uit. Geen foutmelding of niks.

Ik heb al geprobeerd:

- tijd van 60 seconden naar 10 minuten te veranderen.
- ipv timer aan te maken in code hem te slepen vanaf de toolbox
- een logger erbij gemaakt om fouten in klasse's die ik gebruik te registreren
- kijken of er nog sql connecties gemaakt worden als ik denk dat de service niet meer werkt, dit is het geval
- uitgeprobeerd op een windows 2000 server, en een windows 2003 server
- gezocht op google. Er was nog iemand met een soortgelijk probleem met een timer in een windows service. Maar helaas stonden er geen antwoorden bij.
- Als ik de services manager bekijk dan werkt hij prima... nergens geen foutmelding in de evenlogs
- als ik de service herstart dan werkt hij weer voor een paar dagen
- ik heb nu een windows forms applicatie gemaakt op dezelfde manier die elke 5 seconden een regel wegschrijft, ik zal kijken hoe lang deze meegaat.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Imports System.ServiceProcess 
Imports System.Timers 

Public Class Service1 
    Inherits System.ServiceProcess.ServiceBase 

    ' Specify what you want to happen when the Elapsed event is raised. 
    Public Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs) 
        Try 
            Dim SendOutAd As New SendOutAds() 
            Dim SendOutVC As New SendOutVCards() 
            Dim SendOutOrder As New SendOutOrders() 

            SendOutAd.SendNow() 
            SendOutVC.SendNow() 
            SendOutOrder.SendNow() 
        Catch ex As Exception 
            Dim Logit As New LogError() 
            Logit.WriteToLog(ex) 
        End Try 
    End Sub 

    Protected Overrides Sub OnStart(ByVal args() As String) 
        ' Add code here to start your service. This method should set things 
        ' in motion so your service can do its work. 
        Dim aTimer As New System.Timers.Timer() 
        AddHandler aTimer.Elapsed, AddressOf OnTimedEvent 
        ' Set the Interval to 60 seconds. 
        aTimer.Interval = 60000 
        aTimer.Enabled = True 
    End Sub 

    Protected Overrides Sub OnStop() 
        ' Add code here to perform any tear-down necessary to stop your service. 
    End Sub 

End Class 

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

overflow comes to mind :?
heb je daar al iets over gezocht?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
D2k schreef op 29 April 2003 @ 13:48:
overflow comes to mind :?
heb je daar al iets over gezocht?
Ja zoiets moet het zijn maar er zijn geen antwoorden te vinden...

  • victorv
  • Registratie: Januari 2002
  • Laatst online: 17-02-2024

victorv

Locallost

Misschien dat aTimer opgeruimd wordt door de garbage collector. Probeer het eens door de timer als een private member aan te maken in Service1 en die te gebruiken in OnStart().

[ Voor 4% gewijzigd door victorv op 29-04-2003 15:17 ]

"Accomplishing the impossible means only that the boss will add it to your regular duties."