MS
This commit is contained in:
140
app/windream-Result-Handler/Service1.vb
Normal file
140
app/windream-Result-Handler/Service1.vb
Normal file
@@ -0,0 +1,140 @@
|
||||
Imports System.IO
|
||||
Imports System.Collections.ObjectModel
|
||||
Imports System.ComponentModel
|
||||
Imports System.Data.SQLite
|
||||
|
||||
Public Class Service1
|
||||
#Region "+++++ Variablen +++++"
|
||||
Public Shared _windream As New clsWindream_allgemein
|
||||
Public Shared threadRunner As BackgroundWorker
|
||||
Public Shared WDLaufwerk As String
|
||||
|
||||
Public Shared _PROFIL_ID As Integer
|
||||
Dim _INTERVALL As Integer
|
||||
'Variablen für Dateiimporter
|
||||
|
||||
#End Region
|
||||
#Region "+++++ Start Stop Events +++++"
|
||||
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.
|
||||
' Code zum Starten des Dienstes hier einfügen.
|
||||
Init()
|
||||
|
||||
End Sub
|
||||
Sub Init()
|
||||
Try
|
||||
ClassLogger.Init(My.Application.Info.DirectoryPath & "\Log", "logService_")
|
||||
ClassLogger.Add(" ", False)
|
||||
ClassLogger.Add("## WindreamResultHandler Init-Phase - " & Now & " ## ", False)
|
||||
|
||||
If My.Settings.SQliteConnection = String.Empty Then
|
||||
ClassLogger.Add("Achtung: Es wurde noch kein Datenbank-ConnectionString hinterlegt.", True)
|
||||
Exit Sub
|
||||
Else
|
||||
If clsSQLITE.Init = False Then
|
||||
ClassLogger.Add("Achtung: Es konnte keine Verbindung zur Datenbank '" & My.Settings.SQliteConnection & "' hergestellt werden!", True)
|
||||
Exit Sub
|
||||
Else
|
||||
'### Thread für Durchlauf generieren
|
||||
Service1.threadRunner = New BackgroundWorker()
|
||||
Service1.threadRunner.WorkerReportsProgress = True
|
||||
Service1.threadRunner.WorkerSupportsCancellation = True
|
||||
AddHandler threadRunner.DoWork, AddressOf RUN_THREAD
|
||||
AddHandler threadRunner.RunWorkerCompleted, AddressOf Thread_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 = clsSQLITE.konf_intervall * 60000
|
||||
ClassLogger.Add("- Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False)
|
||||
Timer_Durchlauf.Enabled = True
|
||||
ClassLogger.Add("- Timer gestartet", False)
|
||||
' Und den Durchlauf das erste Mal starten
|
||||
threadRunner.RunWorkerAsync()
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(ex.Message, True, "Service Init")
|
||||
End Try
|
||||
End Sub
|
||||
Public Shared Sub Thread_Run()
|
||||
If Not threadRunner.IsBusy Then
|
||||
threadRunner.RunWorkerAsync()
|
||||
End If
|
||||
End Sub
|
||||
Protected Overrides Sub OnStop()
|
||||
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
|
||||
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
|
||||
ClassLogger.Add("", False)
|
||||
ClassLogger.Add("## WindreamResultHandler wurde gestoppt - " & Now & " ## ", False)
|
||||
ClassLogger.Add("", False)
|
||||
End Sub
|
||||
Public Shared Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
|
||||
Try
|
||||
ClassLogger.Init(My.Application.Info.DirectoryPath & "\Log", "logService_")
|
||||
ClassLogger.Add("", False)
|
||||
ClassLogger.Add("## Start Durchlauf WindreamResultHandler - " & Now & " ## ", False)
|
||||
ClassLogger.Add("", False)
|
||||
'windream initialisieren
|
||||
If _windream.Init() = True Then
|
||||
'Zur sicherheit die DB nochmal initialiseren
|
||||
If clsSQLITE.Init() = True Then
|
||||
Dim DT As DataTable = clsSQLITE.Return_Datatable("SELECT GUID FROM TBPROFIL WHERE AKTIV = 1 order by REIHENFOLGE")
|
||||
For Each DR As DataRow In DT.Rows
|
||||
_PROFIL_ID = CInt(DR.Item("GUID"))
|
||||
'Und nun das Profil durchlaufen
|
||||
If clsProfil.Init(_PROFIL_ID) = True Then
|
||||
clsProfil.Profil_Durchlauf()
|
||||
End If
|
||||
Next
|
||||
clsSQLITE.Execute_non_Query("UPDATE TBKONFIGURATION SET LAST_TICK = DATETIME ('now' , 'localtime') WHERE GUID = 1")
|
||||
End If
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(ex.Message, True, "RUN_THREAD")
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "*** BackgroundWorker DI und NI beenden und Abbrechen ***"
|
||||
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
|
||||
ClassLogger.Add("## Der Dateiimport wurde durch den Anwender abgebrochen", False)
|
||||
ElseIf e.Error IsNot Nothing Then
|
||||
ClassLogger.Add("Fehler bei Durchlauf. Der Vorgang wird abgebrochen.", True, "Thread_Completed")
|
||||
ClassLogger.Add(e.Error.Message, True, "Thread_Completed")
|
||||
End If
|
||||
|
||||
'If DI_Verzeichnisloeschen Then
|
||||
' Try
|
||||
' My.Computer.FileSystem.DeleteDirectory(DI_Quellordner, FileIO.DeleteDirectoryOption.ThrowIfDirectoryNonEmpty)
|
||||
' Catch ex As Exception
|
||||
' ClassLogger.Add("ACHTUNG: Der Vorgang wurde abgeschlossen. Das Quellverzeichnis konnte jedoch nicht gelöscht werden, da sich in dem Ordner noch Dateien/Verzeichnisse befinden.", False)
|
||||
' End Try
|
||||
'End If
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(ex.Message, True, "Thread_Completed")
|
||||
End Try
|
||||
End Sub
|
||||
Public Shared Function Thread_Abbrechen()
|
||||
Try
|
||||
If Service1.threadRunner.IsBusy Then
|
||||
Service1.threadRunner.CancelAsync()
|
||||
End If
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(ex.Message, True, "Thread_Abbrechen")
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
#End Region
|
||||
End Class
|
||||
Reference in New Issue
Block a user