Service Windows - Arrêt immédiat !!

Résolu
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 27 mai 2008 à 14:46
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 28 mai 2008 à 14:36
Bonjour,

J'ai créé un petit service en VB.NET 2008 (framework 3.5) permettant d'afficher un message (je sais, c'est pas propre, mais c'est plus pour le debugging que pour la release...) dès qu'une entrée est ajoutée dans une table particulière d'une base. L'installation se déroule sans problèmes, mais lorsque je veux lancer mon service, j'ai le message suivant :
---------------------------
Services
---------------------------
The AlertSMS service on Local Computer started and then stopped.  Some services stop automatically if they have no work to do, for example, the Performance Logs and Alerts service.
---------------------------
OK  
---------------------------

Le code est pourtant bien présent et bien placé (si j'en crois toute la doc que j'ai lue). J'ai longuement cherché une solution sur divers forums, en vain...
Je déclare mon timer dans la fonction OnStart(), puis je le lie à la fonction Timer_Tick pour que l'exécution se fasse à intervalle régulier.

Voici le code :
------------------------------------------------------------------------------------------------------------------------------------
Public Class AlertSMS

    Protected Overrides Sub OnStart(ByVal args() As String)
        Dim time As System.Threading.Timer
        Dim callBack As New TimerCallback(AddressOf Timer_Tick)
        time = New System.Threading.Timer(callBack, Nothing, 0, 50)
        MsgBox("Le service surveille maintenant la table Alert...", MsgBoxStyle.Information, "Service démarré")
    End Sub

    Public Sub Timer_Tick(ByVal state As Object)
        'Parcours de la liste des entrées de la table Alert
        Dim allalerts As New DAL.AlertCollection
        allalerts.Load()
        For Each elem As DAL.Alert In allalerts.GetCollection()
            MsgBox("Nouvelle alerte : " + vbCrLf + "Message #" + elem.MsgID, MsgBoxStyle.Exclamation, "Attention")
            '*** Traitement de l'alerte ***
            elem.Delete()
            elem.Save()
        Next
    End Sub

End Class
------------------------------------------------------------------------------------------------------------------------------------

Merci de votre aide

Etienne

2 réponses

cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
27 mai 2008 à 19:03
Salut,
Essaye de creer un Thread plutot que d'utiliser un timer
@+
Megafan
3
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
28 mai 2008 à 14:36
Salut et merci pour ta réponse, en fait j'ai trouvé d'où venait mon problème. D'un il fallait enlever la MsgBox, car il n'apprécie pas trop. Ensuite mon principale problème venait que mon service avait un "Account " différent de User ce qui empêcher le service de bien fonctionner pour accéder à la base de données apparement. Voila j'espère avoir été assez clair.
3
Rejoignez-nous