Imports System.ComponentModel Imports DigitalData.Modules.Logging Imports NLog Public Class MyNewService Dim MyLogger1 As LogConfig Shared Logger1 As NLog.Logger Dim MyLogger2 As LogConfig Shared Logger2 As NLog.Logger Public Shared threadRunner1 As BackgroundWorker 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 = 10000 'ClassLogger.Add("Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False) Timer1.Enabled = True MyLogger1 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Log1") Logger1 = MyLogger1.LogFactory.GetCurrentClassLogger() MyLogger2 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Log2") Logger2 = MyLogger2.LogFactory.GetCurrentClassLogger() 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. ' 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 = 12000 ' 12 seconds AddHandler timer.Elapsed, AddressOf Me.OnTimer1 timer.Start() End Sub Private Sub RUN_THREAD() ' 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) ' 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