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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
Option Explicit On
Option Strict On
Imports System.ServiceProcess
Imports System.IO
Public Class cService
Inherits System.ServiceProcess.ServiceBase
#Region "DECLARATION"
Private niIcon As New System.Windows.Forms.NotifyIcon()
Private WithEvents tTimer As New System.Timers.Timer
Private cCurrentConnection As New System.Data.OleDb.OleDbConnection
Private intCurrentCount As Integer
#End Region
#Region " Code généré par le Concepteur de composants "
Public Sub New()
MyBase.New()
' Cet appel est requis par le Concepteur de composants.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent()
' Initialisation des FileSystemWatcher
initService()
' Autorise a mettre en pause le service
Me.CanPauseAndContinue = True
' Demande a se que l'event log soit renseigné au demarrage et arret du service
Me.AutoLog = True
End Sub
'La méthode substituée Dispose du UserService pour nettoyer la liste des composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Le point d'entrée principal pour le processus
<MTAThread()> _
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' Plusieurs services NT s'exécutent dans le même processus. Pour ajouter
' un autre service à ce processus, modifiez la ligne suivante
' pour créer un second objet service. Par exemple,
'
' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
'
ServicesToRun = New System.ServiceProcess.ServiceBase() {New cService()}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
'Requis par le Concepteur de composants
Private components As System.ComponentModel.IContainer
' REMARQUE*: la procédure suivante est requise par le Concepteur de composants
' Elle peut être modifiée à l'aide du Concepteur de composants.
' Ne la modifiez pas en utilisant l'éditeur de code.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.ServiceName = "NDService"
End Sub
#End Region
#Region "Surcharge Methode gestion evenement Service"
' Executer lors du lancement du service
Protected Overrides Sub OnStart(ByVal args() As String)
MsgBox("Je démarre c'est cool")
niIcon.Icon = My.Resources.Appd
niIcon.Visible = True
niIcon.ShowBalloonTip(2000, "Démarrage", "Le service de control est démarré", Windows.Forms.ToolTipIcon.Info)
Try
If cCurrentConnection.State = ConnectionState.Closed Then
cCurrentConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""C:\MonCHemin\MaBase.mdb"""
cCurrentConnection.Open()
End If
Catch ex As Exception
System.Windows.Forms.MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
Me.Dispose()
End Try
intCurrentCount = GetCurrentCount()
' 10 sec ! C'est peu --> mieux vaut mettre 5 a 10 min je pense
tTimer.Interval = 10000
tTimer.Start()
End Sub
' Executer lors de sa mise en pause
Protected Overrides Sub OnPause()
tTimer.Stop()
End Sub
' Executer qd on sort de la pause
Protected Overrides Sub OnContinue()
tTimer.Start()
End Sub
' Executer qd on arrete le service
Protected Overrides Sub OnStop()
' Ajoutez ici le code pour effectuer les destructions
' nécessaires à l'arrêt de votre service.
MsgBox("Je m'arrête")
niIcon.Visible = False
End Sub
#End Region
#Region "PROCEDURES PRIVEES"
Private Sub initService()
' rien qui ne vaille le coup a faire
End Sub
Private Function GetCurrentCount() As Integer
Try
Dim strSqlQuery As String = "SELECT COUNT(*) FROM Table1"
Dim cmd As New OleDb.OleDbCommand(strSqlQuery, cCurrentConnection)
Return CInt(cmd.ExecuteScalar())
Catch ex As Exception
System.Windows.Forms.MessageBox.Show("Erreur sur comptage : " & ex.Message)
Me.Dispose()
End Try
End Function
#End Region
Private Sub tTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles tTimer.Elapsed
Dim intNewCount As Integer
intNewCount = GetCurrentCount()
If intNewCount <> intCurrentCount Then
intCurrentCount = intNewCount
niIcon.ShowBalloonTip(2000, "Insertion en base", "Nouvelles données disponibles", Windows.Forms.ToolTipIcon.Info)
End If
End Sub
End Class |
Partager