Imports System.ComponentModel Imports DigitalData.Modules.Logging Imports NLog Public Class MyNewService Private Shared _MyLoggerConfig1 As LogConfig Private Shared _MyLoggerConfig2 As LogConfig Public Shared threadRunner1 As BackgroundWorker Private Shared Logger1 As Logger '= LogManager.GetCurrentClassLogger Private Shared Logger2 As Logger '= LogManager.GetCurrentClassLogger Private eventId As Integer = 1 Protected Overrides Sub OnStart(ByVal args() As String) ' '#Thread für Durchlauf generieren threadRunner1 = New BackgroundWorker() threadRunner1.WorkerReportsProgress = True threadRunner1.WorkerSupportsCancellation = True AddHandler threadRunner1.DoWork, AddressOf RUN_THREAD AddHandler threadRunner1.RunWorkerCompleted, AddressOf Thread_Completed ' '### Den Timer generieren Dim Timer1 As New System.Timers.Timer() 'Das Event hinterlegen welches bei "Tick" ausgelöst wird AddHandler Timer1.Elapsed, AddressOf Thread1_Run ' Set the Interval Timer1.Interval = 60000 'ClassLogger.Add("Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False) Timer1.Enabled = True Logger1.Info("Timer gestartet") ' Und den Durchlauf das erste Mal starten threadRunner1.RunWorkerAsync() ' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge ' ausführen, damit der Dienst gestartet werden kann. ' _MyLoggerConfig1 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Timer1") _MyLoggerConfig2 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Timer2") ' clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "_SERVICEResultHandler") Logger1.Info("Service started") Logger2.Info("Service started") ' Set up a timer to trigger every minute. Dim timer As System.Timers.Timer = New System.Timers.Timer() timer.Interval = 30000 ' 30 seconds AddHandler timer.Elapsed, AddressOf Me.OnTimer1 timer.Start() End Sub Private Sub RUN_THREAD() _MyLoggerConfig1 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "TimerXYZ") Logger1 = LogManager.GetCurrentClassLogger ' TODO: Insert monitoring activities here. Logger1.Info("RUN_THREAD - Monitoring the System - eventId: " & eventId) End Sub Public Shared Sub Thread1_Run() If Not threadRunner1.IsBusy Then threadRunner1.RunWorkerAsync() End If End Sub Private Shared Sub Thread_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted ' This event fires when the DoWork event completes Try Dim result As String = "" If e.Cancelled Then Logger1.Warn("Der Process wurde durch den Anwender abgebrochen") ElseIf e.Error IsNot Nothing Then Logger1.Warn("Fehler bei Durchlauf. Der Vorgang wird abgebrochen: " & e.Error.Message) End If Catch ex As Exception EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in Thread_Completed: " & ex.ToString(), EventLogEntryType.Error) End Try End Sub Private Sub OnTimer1(sender As Object, e As Timers.ElapsedEventArgs) _MyLoggerConfig2 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Timer1") Logger2 = LogManager.GetCurrentClassLogger ' TODO: Insert monitoring activities here. Logger2.Info("OnTimer1 - Monitoring the System - eventId: " & eventId) eventId = eventId + 1 End Sub Protected Overrides Sub OnStop() ' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen. Logger1.Info("Service stopped") Logger2.Info("Service stopped") End Sub Protected Overrides Sub OnPause() Logger1.Info("In OnPause...") Logger2.Info("In OnPause...") End Sub Protected Overrides Sub OnContinue() Logger1.Info("In OnContinue...") Logger2.Info("In OnContinue...") End Sub End Class