Imports System.Timers Imports System.IO Imports System.ComponentModel Imports DigitalData.Modules.Base Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Database Imports DigitalData.Modules.Messaging Imports DigitalData.Modules.Config Imports GdPicture.Internal.WPF Public Class Service Private Logger As Logger Private LogConfig As LogConfig Private ConfigManager As ConfigManager(Of Config) Private Config As Config Private Database As MSSQLServer Private TempFiles As TempFiles Private Scheduler As Scheduler Protected Overrides Async Sub OnStart(ByVal args() As String) Try ' === Initialize Logger === Dim oLogPath = Path.Combine(My.Application.Info.DirectoryPath, "Log") LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, Nothing, "Digital Data", "EnvelopeGenerator.Service") ' === Initialize Config === ConfigManager = New ConfigManager(Of Config)(LogConfig, My.Application.Info.DirectoryPath) Config = ConfigManager.Config LogConfig.Debug = Config.Debug Logger = LogConfig.GetLogger() Logger.Info($"DEBUG = {LogConfig.Debug}") Logger.Info("Starting [{0}]", ServiceName) TempFiles = New TempFiles(LogConfig) TempFiles.Create() ' === Initialize Databases === Logger.Info("Inititalize Database ...") If Config.ConnectionString = String.Empty Then Throw New ApplicationException("Connection String is empty!") End If Database = New MSSQLServer(LogConfig, Config.ConnectionString) Logger.Debug("Database initialized") If Database.DBInitialized = False Then Throw New ApplicationException("Database connection could not be established!") End If Dim oKey = Database.GetScalarValue("SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE' and ACTIVE = 1") If String.IsNullOrWhiteSpace(oKey) Then Throw New ApplicationException("GDPicture License could not be loaded!") End If ' === Initialize Queue === Logger.Debug("Inititalize Quartz") Scheduler = New Scheduler(LogConfig, Config.ConnectionString, oKey, Config.IgnoredLabels) Await Scheduler.Start(Config.IntervalInMin) Logger.Info("Started [{0}] !", ServiceName) Catch ex As Exception Logger.Error(ex) End Try End Sub Protected Overrides Async Sub OnStop() Try Logger.Info("Stopping [{0}] !", ServiceName) Await Scheduler.Stop() TempFiles.CleanUp() Logger.Info("Stopped [{0}] !", ServiceName) Catch ex As Exception Logger.Error(ex) End Try End Sub End Class