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