121 lines
6.2 KiB
VB.net
121 lines
6.2 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-PROXYService started ## ", 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
|
|
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("## Service was stopped ## ", 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
|
|
Dim sw As New Stopwatch
|
|
sw.Start()
|
|
Dim error_While_executing As Boolean = False
|
|
Dim upd = ""
|
|
upd = "UPDATE TBPROXY_CONFIG SET SYNC_RUNNING = 1 WHERE GUID = 1"
|
|
clsDatabase.Execute_non_Query(upd)
|
|
'Wenn Zeilen enthalten.....
|
|
For Each syncRow As DataRow In DT_PROCEDURES.Rows
|
|
Dim GUID = syncRow.Item("GUID")
|
|
clsLogger.AddDetailLog(">> Executing Procedure: " & syncRow.Item("PROC_NAME").ToString & " ...")
|
|
clsLogger.WriteLog()
|
|
upd = "UPDATE TBPROXY_SYNC_PROCEDURES SET SYNCHRONIZED_WHEN = NULL WHERE GUID = " & GUID
|
|
clsDatabase.Execute_non_Query(upd)
|
|
If EXECUTE_ROCEDURE(syncRow.Item("PROC_NAME").ToString) = True Then
|
|
upd = "UPDATE TBPROXY_SYNC_PROCEDURES SET SYNCHRONIZED_WHEN = GETDATE() WHERE GUID = " & GUID
|
|
clsDatabase.Execute_non_Query(upd)
|
|
Else
|
|
clsLogger.Add(">> An error occured while executing procedure: " & syncRow.Item("PROC_NAME").ToString & " ...", False)
|
|
error_While_executing = True
|
|
End If
|
|
clsLogger.WriteLog()
|
|
Next
|
|
upd = "UPDATE TBPROXY_CONFIG SET SYNC_RUNNING = 0, LAST_SYNC = GETDATE() WHERE GUID = 1"
|
|
clsDatabase.Execute_non_Query(upd)
|
|
Dim elapsed As Double
|
|
elapsed = sw.Elapsed.TotalSeconds
|
|
sw.Stop()
|
|
sw.Reset()
|
|
If error_While_executing = False Then
|
|
clsLogger.Add(">> All procedures executed without errors!", False)
|
|
clsLogger.Add(">> Execution-time: " & Format(elapsed, "0.000000000") & " seconds", False)
|
|
End If
|
|
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 executesql = String.Format("EXEC [dbo].[{0}]", PROXY_PROCEDURE)
|
|
If clsDatabase.Execute_non_Query(executesql) = True Then
|
|
clsLogger.AddDetailLog(">> Procedure executed successfull - Command: " & executesql)
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
End Function
|
|
End Class
|