113 lines
5.3 KiB
VB.net
113 lines
5.3 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports DigitalData.EMLProfiler
|
|
Imports DigitalData.Modules.Database
|
|
Imports DigitalData.Modules.Logging
|
|
Public Class MyService
|
|
#Region "+++++ variables +++++"
|
|
Private _threadRunner As BackgroundWorker
|
|
Private LogConfig As LogConfig
|
|
Private Logger As Logger
|
|
'Private _database As clsDatabase
|
|
Private _workmail As clsWorkEmail
|
|
|
|
Private _ConfigManager As ClassConfig
|
|
Private _Config As ClassConfig.Config
|
|
|
|
Private Database As MSSQLServer
|
|
#End Region
|
|
Public Sub New()
|
|
MyBase.New()
|
|
InitializeComponent()
|
|
End Sub
|
|
Protected Overrides Sub OnStart(ByVal args() As String)
|
|
' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge
|
|
' ausführen, damit der Dienst gestartet werden kann.
|
|
Try
|
|
Dim oLogPath = Path.Combine(My.Application.Info.DirectoryPath, "Log")
|
|
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, Nothing, "Digital Data", "DD EmailProfiler", 30)
|
|
Logger = LogConfig.GetLogger
|
|
|
|
Logger.Info("## Service started ## ")
|
|
|
|
If My.Settings.MyConnectionString = String.Empty Then
|
|
Logger.Warn("NO CONNECTIONSTRING CONFIGURED.")
|
|
Else
|
|
If My.Settings.DEBUG = True Then
|
|
Logger.Info("DEBUG ACTIVATED")
|
|
LogConfig.Debug = True
|
|
Else
|
|
LogConfig.Debug = False
|
|
End If
|
|
|
|
Database = New MSSQLServer(LogConfig, My.Settings.MyConnectionString)
|
|
_ConfigManager = New ClassConfig(LogConfig, Database)
|
|
_Config = _ConfigManager.GetConfig()
|
|
|
|
'_database = New clsDatabase(MyLogger, My.Settings.MyConnectionString)
|
|
Logger.Debug("_database and _email initialized")
|
|
_workmail = New clsWorkEmail(LogConfig, My.Settings.MyConnectionString, _Config.WindreamConnectionString, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW,
|
|
My.Settings.USE_WM, My.Settings.EmailAccountID, My.Settings.EmailProfilerPraefix)
|
|
Logger.Debug("_workmail initialized")
|
|
|
|
If Database.DBInitialized = False Then
|
|
Logger.Warn("ATTENTION: No Connection was established '" & My.Settings.MyConnectionString & "'!")
|
|
Else
|
|
'### Thread für das nachträgliche Setzen von Rechten generieren
|
|
_threadRunner = New BackgroundWorker With {
|
|
.WorkerReportsProgress = True,
|
|
.WorkerSupportsCancellation = True
|
|
}
|
|
AddHandler _threadRunner.DoWork, AddressOf RUN_THREAD
|
|
AddHandler _threadRunner.RunWorkerCompleted, AddressOf Thread1_Completed
|
|
'### Den Timer generieren
|
|
Dim Timer_Durchlauf As New System.Timers.Timer()
|
|
'Das Event hinterlegen welches bei "Tick" ausgelöst wird
|
|
AddHandler Timer_Durchlauf.Elapsed, AddressOf Thread_Run
|
|
' Set the Interval
|
|
Timer_Durchlauf.Interval = (_Config.TimerInterval * 60000)
|
|
Timer_Durchlauf.Enabled = True
|
|
Logger.Debug("...Timer started.")
|
|
' Und den Durchlauf das erste Mal starten
|
|
_threadRunner.RunWorkerAsync()
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
Public Sub Thread_Run()
|
|
If Not _threadRunner.IsBusy Then
|
|
_threadRunner.RunWorkerAsync()
|
|
End If
|
|
End Sub
|
|
Public Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
|
|
Try
|
|
Dim notcompleted As Boolean = False
|
|
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, LogConfig, My.Settings.MyConnectionString, _Config.WindreamConnectionString, 0, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW, My.Settings.USE_WM, My.Settings.EmailAccountID, My.Settings.EmailProfilerPraefix)
|
|
_work.Start_WorkingProfiles()
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
Protected Overrides Sub OnStop()
|
|
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
|
|
Logger.Info("## Service was stopped manually. ##")
|
|
End Sub
|
|
Private Sub Thread1_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
|
|
EventLog.WriteEntry("DD EmailProfiler", "The thread was cancelled!", EventLogEntryType.Error)
|
|
Logger.Warn("## The thread was cancelled.")
|
|
ElseIf e.Error IsNot Nothing Then
|
|
EventLog.WriteEntry("DD EmailProfiler", "Unexpected error in thread!", EventLogEntryType.Error)
|
|
Logger.Warn("Unexpected error in thread: " & e.Error.Message)
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
End Class
|