Imports System.ServiceProcess Imports System.Threading Imports System.IO Imports System.Reflection Imports System.IO.File Imports System.Data.SqlClient Imports System.Data.SqlTypes Imports System.ComponentModel Imports System Imports System.SystemException Public Class Service1 #Region "Deklarationen" Dim Watch_Directory As String Dim FileWatch As New FileSystemWatcher() Dim LogFileOK As String = "" Dim LogFileNOK As String = "" Dim LogFileDebug As String = "" Dim WithEvents WatchTimer As New Timers.Timer() #End Region Protected Overrides Sub OnStart(ByVal args() As String) 'FileOpen(1, "D:\tssettings\Edoka\edkb14\Logs\Test.txt", OpenMode.Output) 'WriteLine(1, "Start") Globals.Param = New Parameters Dim hh, mm, ss As String hh = Param.Startzeit.Substring(0, 2) mm = Param.Startzeit.Substring(3, 2) ss = Param.Startzeit.Substring(6, 2) Globals.Startzeit = New Date(Now.Year, Now.Month, Now.Day, hh, mm, ss) Globals.Endzeit = Globals.Startzeit.AddHours(Param.Laufzeit) LogFileOK = Param.LogDir + Format(Now, "ddMMyyyy hhmmss") + "_OK.txt" LogFileNOK = Param.LogDir + Format(Now, "ddMMyyyy hhmmss") + "_NOK.txt" LogFileDebug = Param.LogDir + Format(Now, "ddMMyyyy hhmmss") + "_Debug.txt" Globals.LogEntry = New Log(LogFileOK, LogFileNOK, LogFileDebug, Param.DebugMode) LogEntry.Writelog(Log.Logtype.Debug, "Start EDKB14") LogEntry.Writelog(Log.Logtype.Debug, "Parameter:") LogEntry.Writelog(Log.Logtype.Debug, "Connectionstring EDOKA: " + Param.connectionstring) LogEntry.Writelog(Log.Logtype.Debug, "Connectionstring Journale: " + Param.connectionstring_Journale) LogEntry.Writelog(Log.Logtype.Debug, "Anz Dokumente:" + Param.AnzDokumente.ToString) LogEntry.Writelog(Log.Logtype.Debug, "WorkDir: " + Param.WorkDir) LogEntry.Writelog(Log.Logtype.Debug, "DSRDir: " + Param.DSRDir) LogEntry.Writelog(Log.Logtype.Debug, "DokType Briefvorlage: " + Param.DokTypeBriefvorlage.ToString) LogEntry.Writelog(Log.Logtype.Debug, "PSDir: " + Param.PSDir) LogEntry.Writelog(Log.Logtype.Debug, "PDFDir " + Param.PDFDir) LogEntry.Writelog(Log.Logtype.Debug, "LogDir: " + Param.LogDir) LogEntry.Writelog(Log.Logtype.Debug, "PS Printer :" + Param.PSPrinter) LogEntry.Writelog(Log.Logtype.Debug, "Distiller In Out Dirs:" + Param.Use_PDFInOutDir.ToString) LogEntry.Writelog(Log.Logtype.Debug, "EDKB08 Dir: " + Param.EDKB08Dir) LogEntry.Writelog(Log.Logtype.Debug, "Wait Loop:" + Param.WaitLoop.ToString) LogEntry.Writelog(Log.Logtype.Debug, "Oracle ConString: " + Param.OracleConnectionString) LogEntry.Writelog(Log.Logtype.Debug, "Adresse aus Oracle: " + Param.AdresseAbOracle.ToString) LogEntry.Writelog(Log.Logtype.Debug, "Startzeit: " + Param.Startzeit.ToString) LogEntry.Writelog(Log.Logtype.Debug, "Laufzeit in Std: " + Param.Laufzeit.ToString) LogEntry.Writelog(Log.Logtype.Debug, "Mail Durchlauf: " + Param.Mailadresse.ToString) LogEntry.Writelog(Log.Logtype.Debug, "Timer-Intervall in Millisekunden: " + Param.TimerIntevall.ToString) LogEntry.Writelog(Log.Logtype.Debug, "CheckOffice 2010: " + Param.CheckOffice2010.ToString) Globals.LogData.Columns.Add("Timestamp") Globals.LogData.Columns.Add("Partner") Globals.LogData.Columns.Add("VV") Globals.LogData.Columns.Add("Banklagernd") Me.WatchTimer.Interval = Globals.Param.TimerIntevall Me.WatchTimer.Enabled = True LogEntry.Writelog(Log.Logtype.Debug, "Berechnete Endzeit:" + Globals.Endzeit.ToString) LogEntry.Writelog(Log.Logtype.Debug, "------------------------------------------------------------") Exit Sub Me.Watch_Directory = Param.DSRDir If Not Init_Filewatcher() Then LogEntry.Writelog(Log.Logtype.NOK, "Filewacher konnte nicht initialisiert werden") End If LogEntry.Writelog(Log.Logtype.Debug, "Init Filewatcher durch") Me.Start_Watching() 'FileClose(1) End Sub Protected Overrides Sub OnStop() ' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen. End Sub #Region "Filewatcher" Private Function Init_Filewatcher() As Boolean Try FileWatch.Path = Watch_Directory FileWatch.IncludeSubdirectories = False FileWatch.Filter = "*.xml" Return True Catch ex As Exception LogEntry.Writelog(Log.Logtype.NOK, "Init Filewacher: " + ex.Message) Return False End Try End Function '''Eventhandler des FileWatching-Objektes aktivieren Private Function Start_Watching() As Boolean Try AddHandler FileWatch.Created, New FileSystemEventHandler(AddressOf OnFileEvent) FileWatch.EnableRaisingEvents = True LogEntry.Writelog(Log.Logtype.Debug, "Filewatch Event-Handler initialisiert: " + Me.Watch_Directory) Return True Catch ex As Exception LogEntry.Writelog(Log.Logtype.Debug, "Fehler bei der Event-Initialisierung " + ex.Message) Return False End Try End Function Dim EventStopped As Boolean = False '''Aktivitäten im Inputverzeichnis verarbeiten '''Wird eine Datei mit der Endung .IND angeliefert, wird der Eventhandler '''gestoppt und die anstehenden Dokumente verarbeitet. ''' '''Nach abgeschlossener Verarbeitung wird der Eventhandler wieder '''eingeschaltet ''' ''' Private Sub OnFileEvent(ByVal source As Object, ByVal e As FileSystemEventArgs) If EventStopped = True Then LogEntry.Writelog(Log.Logtype.Debug, "Neue Datei " + e.FullPath) LogEntry.Writelog(Log.Logtype.Debug, "Event Stoped") End If Exit Sub If UCase(Microsoft.VisualBasic.Right(e.FullPath, 4)) = ".XML" Then FileWatch.EnableRaisingEvents = False EventStopped = True LogEntry.Writelog(Log.Logtype.Debug, "Neue Datei " + e.FullPath) 'ServiceIcon.Text = "Working..." Threading.Thread.Sleep(2000) ModMain.Main() EventStopped = False FileWatch.EnableRaisingEvents = True End If End Sub Public Function WriteToEventLog(ByVal Entry As String, _ Optional ByVal AppName As String = "EDKB14WS", _ Optional ByVal EventType As _ EventLogEntryType = EventLogEntryType.Information, _ Optional ByVal LogName As String = "EDKB14WS") As Boolean '************************************************************* 'PURPOSE: Write Entry to Event Log using VB.NET 'PARAMETERS: Entry - Value to Write ' AppName - Name of Client Application. Needed ' because before writing to event log, you must ' have a named EventLog source. ' EventType - Entry Type, from EventLogEntryType ' Structure e.g., EventLogEntryType.Warning, ' EventLogEntryType.Error ' LogName: Name of Log (System, Application; ' Security is read-only) If you ' specify a non-existent log, the log will be ' created 'RETURNS: True if successful, false if not 'EXAMPLES: '1. Simple Example, Accepting All Defaults ' WriteToEventLog "Hello Event Log" '2. Specify EventSource, EventType, and LogName ' WriteToEventLog("Danger, Danger, Danger", "MyVbApp", _ ' EventLogEntryType.Warning, "System") ' 'NOTE: EventSources are tightly tied to their log. ' So don't use the same source name for different ' logs, and vice versa '****************************************************** Dim objEventLog As New EventLog() Try 'Register the App as an Event Source If Not objEventLog.SourceExists(AppName) Then objEventLog.CreateEventSource(AppName, LogName) End If objEventLog.Source = AppName 'WriteEntry is overloaded; this is one 'of 10 ways to call it objEventLog.WriteEntry(Entry, EventType) Return True Catch Ex As Exception Return False End Try End Function #End Region Private Sub WatchTimer_Elap() End Sub Private Sub WatchTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles WatchTimer.Elapsed LogEntry.Writelog(Log.Logtype.Debug, "Timer Elapsed") If Globals.In_Runtime Then Me.WatchTimer.Enabled = False ModMain.Main() End If Me.WatchTimer.Enabled = True End Sub End Class