117 lines
5.4 KiB
VB.net

Imports System.ComponentModel
Imports System.IO
Imports Independentsoft.Email.Mime
Imports DigitalData.EMLProfiler
Imports DigitalData.EMLProfiler.ClassCurrent
Imports DigitalData.Modules.Logging
Public Class MyService
#Region "+++++ variables +++++"
Private _threadRunner As BackgroundWorker
Private MyLogger As LogConfig
Private Logger As Logger
Private _database As clsDatabase
Private _windream As clsWindream_allgemein
Private _workmail As clsWorkEmail
#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
MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"), Nothing, "Digital Data", "DD EmailProfiler")
Logger = MyLogger.GetLogger
Try
Dim directory As New IO.DirectoryInfo(MyLogger.LogDirectory)
For Each file As IO.FileInfo In directory.GetFiles
If (Now - file.CreationTime).Days > 29 Then
file.Delete()
Else
Exit For
End If
Next
Catch ex As Exception
End Try
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")
MyLogger.Debug = True
Else
MyLogger.Debug = False
End If
_database = New clsDatabase(MyLogger, My.Settings.MyConnectionString)
Logger.Debug("_database and _email initialized")
_workmail = New clsWorkEmail(MyLogger, My.Settings.MyConnectionString, 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.Init(My.Settings.MyConnectionString) = 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()
_threadRunner.WorkerReportsProgress = True
_threadRunner.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 = (TIMER_INTERVALL * 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, MyLogger, My.Settings.MyConnectionString, 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