Bug avec Windows Services & Timers

Résolu
dbizier Messages postés 8 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 16 août 2007 - 16 août 2007 à 21:44
dbizier Messages postés 8 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 16 août 2007 - 16 août 2007 à 22:55
Bonjour,

j'essais de développer un service web qui contient un timer. Le timer doit être appelé tout les 2 secondes.  Mon problème: L'évènement "Elapsed" du timer n'est jamais appelé si je prend un timer de type "System.timers.timer". Apres quelques recherche sur google, je constate qu'il y a un bug connu de Microsoft a ce sujet:

http://support.microsoft.com/kb/842793

Donc, suite à la suggestion de Microsoft, j'ai pris un "System.threading.timer" mais j'ai toujours le même problème. Mon service s'installe et se désinstalle sans aucun problème mais entre les deux, le timer ne semble pas fonctionner.

Voici mon code:

Imports System.Configuration
Imports System.IO
Imports System.Threading

Public Class Service1
    Inherits System.ServiceProcess.ServiceBase

    Private aTrace As bizTrace.bizTrace
    Protected aTimer As System.Threading.Timer

    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.

        Try

            Tracer le lancement du service
            aTrace.ecrireTraceSimple("Debut lancement du service smtParserServ", True)

            Dim myTmrCbck As New TimerCallback(AddressOf Timer_Elapsed)

            aTimer = New Timer(myTmrCbck, Nothing, 1000, 1000)

            Tracer le lancement du service
            aTrace.ecrireTraceSimple("Fin lancement du service smtParserServ", True)

        Catch ex As Exception

            'Tracer l'erreur
            aTrace.ecrireTraceSimple(ex.Message, True)

        Finally

            If Not aTimer Is Nothing Then
                aTimer.Dispose()
            End If

        End Try

    End Sub

    'Cette fonction n'est jamais appelé
    Private Sub Timer_Elapsed(ByVal state As Object)

        'Une petite classe qui dans un fichier       
         aTrace.ecrireTraceSimple("Timer_Elapsed!", True)

    End Sub

Merci de votre aide!
David

2 réponses

dbizier Messages postés 8 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 16 août 2007
16 août 2007 à 22:55
Argggggg!!!!!! Imbécile que je suis! lol

Il ne fallait pas mettre:

        Finally

            If Not aTimer Is Nothing Then
                aTimer.Dispose()
            End If
3
dbizier Messages postés 8 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 16 août 2007
16 août 2007 à 21:49
Je développe avec Visual Studio 2005 (Framework 2.0)
0
Rejoignez-nous