Imports System.ComponentModel Imports System.Globalization Imports System.Threading Imports DigitalData.Modules.Base Public NotInheritable Class frmSplash Private ReadOnly InitSteps As Integer = 4 Private ReadOnly Worker As New BackgroundWorker() Private ReadOnly MainForm As Form Private Sub frmSplash_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp If e.KeyCode = Keys.Escape Then ESC_Hidden = True End If End Sub Private Sub frmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Version.Text = String.Format("Version {0}", My.Application.Info.Version.ToString) Copyright.Text = String.Format("{0} {1}", My.Application.Info.Copyright, My.Application.Info.CompanyName) BringToFront() InitProgram() End Sub Private Sub InitProgram() Worker.WorkerReportsProgress = True AddHandler Worker.DoWork, AddressOf bw_DoWork AddHandler Worker.ProgressChanged, AddressOf bw_ProgressChanged AddHandler Worker.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted Worker.RunWorkerAsync() End Sub Private Function CalcProgress(_step As Integer) Return _step * (100 / InitSteps) End Function Private Function bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) As Task Dim oProgress As String 'Try Dim Init = New ClassInit() oProgress = "Initializing Logger" Worker.ReportProgress(CalcProgress(1), oProgress) Init.InitLogger() Thread.Sleep(200) oProgress = "Initializing Base Config" Worker.ReportProgress(CalcProgress(2), oProgress) Init.InitBasics() Thread.Sleep(200) oProgress = "Initializing Database" Worker.ReportProgress(CalcProgress(3), oProgress) If Init.InitDatabase_New() = True Then Thread.Sleep(200) oProgress = "Initializing User-Configuration" Worker.ReportProgress(CalcProgress(4), oProgress) If My.Settings.GHOSTUSER <> String.Empty Then Logger.Info($"GHOSTLogin [{My.Settings.GHOSTUSER}] is active!") LogConfig.Debug = True End If If Init.InitUserLogin(My.Settings.GHOSTUSER) = False Then If ERROR_INIT = "" Then ERROR_INIT = "INVALID USER" End If End If Thread.Sleep(200) Else ERROR_INIT = "DATABASE" End If ' Catch ex As Exception ' ' MsgBox("Unexpected Error in bw_DoWork: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) ' End Try End Function Private Sub bw_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) pbStatus.Value = e.ProgressPercentage lblStatus.Text = e.UserState.ToString() End Sub Private Sub bw_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) ' Bei Fehler MsgBox anzeigen und Programm beenden If e.Error IsNot Nothing Then MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Unexpected Error in frmSplash") Application.Exit() End If LanguageEx.SetApplicationLanguage(Logger, USER_LANGUAGE, USER_DATE_FORMAT) ' Wenn kein Fehler, Splashscreen schließen Close() End Sub End Class