ProxySync/DD_PROXY_SYNC/Service1.vb
2017-01-11 13:35:10 +01:00

104 lines
4.9 KiB
VB.net

Imports System.ComponentModel
Imports System.Data.SqlClient
Public Class DD_PROXY_SERV
#Region "+++++ Variablen +++++"
'Variablen
Public Shared threadRunner As BackgroundWorker
#End Region
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.
' Start the thread.
Try
clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "logPROXY_SYNC_")
clsLogger.Add("## PMO-Service started - " & Now & " ## ", False)
If My.Settings.MyConnectionString = String.Empty Then
clsLogger.Add("NO CONNECTIONSTRING CONFIGURED.", True)
Else
If clsDatabase.Init = False Then
clsLogger.Add("ATTENTION: No Connection was established '" & My.Settings.MyConnectionString & "'!", True)
Else
If My.Settings.LOG_ERRORS_ONLY = False Then
clsLogger.Add(">> Detail-Log is on!", False)
End If
'### Thread für Durchlauf generieren
DD_PROXY_SERV.threadRunner = New BackgroundWorker()
DD_PROXY_SERV.threadRunner.WorkerReportsProgress = True
DD_PROXY_SERV.threadRunner.WorkerSupportsCancellation = True
AddHandler threadRunner.DoWork, AddressOf RUN_THREAD
AddHandler threadRunner.RunWorkerCompleted, AddressOf Thread_Completed
' Und den Durchlauf das erste Mal starten
threadRunner.RunWorkerAsync()
End If
End If
Catch ex As Exception
clsLogger.AddError(ex.Message, "OnStart")
End Try
End Sub
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
clsLogger.Add("## The thread was cancelled", False)
ElseIf e.Error IsNot Nothing Then
clsLogger.Add("Unexpected Error in Run Thread. The run will be terminated.", True, "Thread_Completed")
clsLogger.Add(e.Error.Message, True, "Thread_Completed")
End If
Catch ex As Exception
clsLogger.AddError(ex.Message, "Thread_Completed")
End Try
clsLogger.WriteLog()
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.
'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestoppt")
clsLogger.Add("", False)
clsLogger.Add("## Service was stopped - " & Now & " ## ", False)
clsLogger.Add("", False)
clsLogger.WriteLog()
End Sub
Public Shared Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
Try
If clsDatabase.Init() = True Then
Dim sql = "select * from TBPROXY_SYNC_PROCEDURES"
Dim DT_PROCEDURES As DataTable = clsDatabase.Return_Datatable(sql)
If Not IsNothing(DT_PROCEDURES) Then
If DT_PROCEDURES.Rows.Count > 0 Then
'Wenn Zeilen enthalten.....
For Each syncRow As DataRow In DT_PROCEDURES.Rows
clsLogger.AddDetailLog(">> Executing Procedure: " & syncRow.Item("PROC_NAME").ToString & " ...")
EXECUTE_ROCEDURE(syncRow.Item("PROC_NAME").ToString)
Next
End If
Else
clsLogger.Add("- NO SYNC PROCEDURES!", False)
End If
End If
Catch ex As Exception
clsLogger.AddError("Uncexpected Error: " & ex.Message, "RUN_THREAD")
Finally
clsLogger.WriteLog()
End Try
End Sub
Public Shared Function EXECUTE_ROCEDURE(PROXY_PROCEDURE As String)
Dim sel = String.Format("DECLARE @return_value int" & vbNewLine & _
"EXEC @return_value = [dbo].[{0}]" & vbNewLine & _
"SELECT 'Return Value' = @return_value", PROXY_PROCEDURE)
clsLogger.AddDetailLog(">> ExecuteCommand: " & sel)
Dim Result As DataTable = clsDatabase.Return_Datatable(sel)
If Not IsNothing(Result) Then
If Result.Rows(0).Item(0) = 0 Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
End Class