diff --git a/DDTestService/DDTestService.vbproj b/DDTestService/DDTestService.vbproj
index a5f86aaa..df8a9034 100644
--- a/DDTestService/DDTestService.vbproj
+++ b/DDTestService/DDTestService.vbproj
@@ -6,7 +6,7 @@
AnyCPU
{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1}
WinExe
- DDTestService.Service1
+ DDTestService.MyNewService
DDTestService
DDTestService
512
@@ -56,6 +56,7 @@
+
@@ -102,6 +103,12 @@
Settings.settings
True
+
+ ProjectInstaller.vb
+
+
+ Component
+
@@ -113,6 +120,9 @@
MyNewService.vb
+
+ ProjectInstaller.vb
+
diff --git a/DDTestService/MyNewService.vb b/DDTestService/MyNewService.vb
index efeb3043..ac45f0c2 100644
--- a/DDTestService/MyNewService.vb
+++ b/DDTestService/MyNewService.vb
@@ -2,35 +2,94 @@
Imports DigitalData.Modules.Logging
Imports NLog
Public Class MyNewService
- Private Shared _MyLoggerConfig As LogConfig
- Public Shared threadRunner As BackgroundWorker
- Private Shared Logger As Logger = LogManager.GetCurrentClassLogger
+ 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.
- _MyLoggerConfig = New LogConfig(LogConfig.PathType.CurrentDirectory)
+ ' _MyLoggerConfig1 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Timer1")
+ _MyLoggerConfig2 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "Timer2")
+
' clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "_SERVICEResultHandler")
- Logger.Info("Service started")
+ 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 = 60000 ' 60 seconds
- AddHandler timer.Elapsed, AddressOf Me.OnTimer
+ timer.Interval = 30000 ' 30 seconds
+ AddHandler timer.Elapsed, AddressOf Me.OnTimer1
timer.Start()
+
End Sub
- Private Sub OnTimer(sender As Object, e As Timers.ElapsedEventArgs)
+ Private Sub RUN_THREAD()
+ _MyLoggerConfig1 = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "TimerXYZ")
+ Logger1 = LogManager.GetCurrentClassLogger
' TODO: Insert monitoring activities here.
- Logger.Info("Monitoring the System - eventId: " & eventId)
+ 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.
- Logger.Info("Service stopped")
+ Logger1.Info("Service stopped")
+ Logger2.Info("Service stopped")
End Sub
Protected Overrides Sub OnPause()
- Logger.Info("In OnPause...")
+ Logger1.Info("In OnPause...")
+ Logger2.Info("In OnPause...")
End Sub
Protected Overrides Sub OnContinue()
- Logger.Info("In OnContinue...")
+ Logger1.Info("In OnContinue...")
+ Logger2.Info("In OnContinue...")
End Sub
End Class
diff --git a/DDTestService/ProjectInstaller.Designer.vb b/DDTestService/ProjectInstaller.Designer.vb
new file mode 100644
index 00000000..86fb8200
--- /dev/null
+++ b/DDTestService/ProjectInstaller.Designer.vb
@@ -0,0 +1,46 @@
+ Partial Class ProjectInstaller
+ Inherits System.Configuration.Install.Installer
+
+ 'Installer überschreibt den Löschvorgang zum Bereinigen der Komponentenliste.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Wird vom Komponenten-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Komponenten-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+ _
+ Private Sub InitializeComponent()
+ Me.ServiceProcessInstaller1 = New System.ServiceProcess.ServiceProcessInstaller()
+ Me.ServiceInstaller1 = New System.ServiceProcess.ServiceInstaller()
+ '
+ 'ServiceProcessInstaller1
+ '
+ Me.ServiceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalService
+ Me.ServiceProcessInstaller1.Password = Nothing
+ Me.ServiceProcessInstaller1.Username = Nothing
+ '
+ 'ServiceInstaller1
+ '
+ Me.ServiceInstaller1.Description = "TestService für testzwecke"
+ Me.ServiceInstaller1.ServiceName = "MyNewService"
+ '
+ 'ProjectInstaller
+ '
+ Me.Installers.AddRange(New System.Configuration.Install.Installer() {Me.ServiceProcessInstaller1, Me.ServiceInstaller1})
+
+ End Sub
+
+ Friend WithEvents ServiceProcessInstaller1 As ServiceProcess.ServiceProcessInstaller
+ Friend WithEvents ServiceInstaller1 As ServiceProcess.ServiceInstaller
+End Class
diff --git a/DDTestService/ProjectInstaller.resx b/DDTestService/ProjectInstaller.resx
new file mode 100644
index 00000000..323abb16
--- /dev/null
+++ b/DDTestService/ProjectInstaller.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 197, 17
+
+
+ False
+
+
\ No newline at end of file
diff --git a/DDTestService/ProjectInstaller.vb b/DDTestService/ProjectInstaller.vb
new file mode 100644
index 00000000..733dfc0c
--- /dev/null
+++ b/DDTestService/ProjectInstaller.vb
@@ -0,0 +1,16 @@
+Imports System.ComponentModel
+Imports System.Configuration.Install
+
+Public Class ProjectInstaller
+
+ Public Sub New()
+ MyBase.New()
+
+ 'Dieser Aufruf ist für den Komponenten-Designer erforderlich.
+ InitializeComponent()
+
+ 'Initialisierungscode nach dem Aufruf von InitializeComponent hinzufügen
+
+ End Sub
+
+End Class