Modules/DDTestService/MyNewService.vb
Digital Data - Marlon Schreiber f2292bc92e MS Service
2018-08-22 16:26:01 +02:00

96 lines
4.2 KiB
VB.net

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