Modules/EDMI_ClientSuite/frmSplash.vb
Jonathan Jenne 94376068d6 jj
2019-01-23 17:22:13 +01:00

91 lines
3.3 KiB
VB.net

Imports System.ComponentModel
Imports System.ServiceModel
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Logging.LogConfig
Imports EDMI_ClientSuite.NetworkService_DDEDM
Public NotInheritable Class frmSplash
Private _Worker As New BackgroundWorker()
Private _ChannelFactory As ChannelFactory(Of IEDMServiceChannel)
Private _Channel As IEDMServiceChannel
Private _Logger As Logger
Private _CurrentRetry As Integer = 0
Private Const SLEEP_TIME = 600
Private Const INIT_STEPS = 1
Private Const MAX_RETRIES = 10
Private Const OPEN_TIMEOUT = 10
Private Sub frmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lblProductName.Text = My.Application.Info.ProductName
lblCopyright.Text = My.Application.Info.Copyright
lblVersion.Text = String.Format("Version {0}", My.Application.Info.Version.ToString)
BringToFront()
StartWorker()
End Sub
Private Function SetProgress(_step As Integer)
Return _step * (100 / INIT_STEPS)
End Function
Private Sub StartWorker()
AddHandler _Worker.DoWork, AddressOf bw_DoWork
AddHandler _Worker.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler _Worker.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
_Worker.WorkerReportsProgress = True
_Worker.RunWorkerAsync()
End Sub
#Region "Worker"
Private Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)
Dim oInit As ClassInit
Try
oInit = New ClassInit()
My.LogConfig = oInit._LogConfig
_Logger = My.LogConfig.GetLogger()
Catch ex As Exception
Throw New Exception($"Error while initializing Logger: {ex.Message}", ex)
End Try
'------------------
_Worker.ReportProgress(SetProgress(1), "Connecting to service..")
Try
My.ChannelFactory = oInit.CreateService()
My.Channel = My.ChannelFactory.CreateChannel()
AddHandler My.Channel.Faulted, Sub()
_Logger.Error("Could not connect to service")
Throw New Exception("Could not connect to service")
End Sub
My.Channel.Open()
Catch ex As Exception
Throw New Exception($"Error while connectiong to service: {ex.Message}", ex)
End Try
System.Threading.Thread.Sleep(SLEEP_TIME)
' TODO: Initialize Usersettings and populate My.Application.User
End Sub
Private Sub bw_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs)
pbStatus.Value = e.ProgressPercentage
lblStatus.Text = e.UserState.ToString()
End Sub
Private Sub bw_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs)
' Bei Fehler MsgBox anzeigen und Programm beenden
If e.Error IsNot Nothing Then
'ClassLogger.Add("Unexpected error in Initializing application....")
MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Critical Error")
Application.Exit()
End If
' Wenn kein Fehler, Splashscreen schließen
Me.Close()
End Sub
#End Region
End Class