This commit is contained in:
Jonathan Jenne
2019-01-23 17:22:13 +01:00
parent 1ed569f7b0
commit 94376068d6
10 changed files with 149 additions and 93 deletions

View File

@@ -1,44 +1,73 @@
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Threading
Imports System.Globalization
Imports System.ServiceModel
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Logging.LogConfig
Imports EDMI_ClientSuite.NetworkService_DDEDM
Public NotInheritable Class frmSplash
Private InitSteps As Integer = 2
Private bw As New BackgroundWorker()
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)
Me.BringToFront()
InitProgram()
BringToFront()
StartWorker()
End Sub
Private Sub InitProgram()
bw.WorkerReportsProgress = True
AddHandler bw.DoWork, AddressOf bw_DoWork
AddHandler bw.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
bw.RunWorkerAsync()
End Sub
Private Function CalcProgress(_step As Integer)
Return _step * (100 / InitSteps)
Private Function SetProgress(_step As Integer)
Return _step * (100 / INIT_STEPS)
End Function
<STAThread()>
Private Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)
bw.ReportProgress(CalcProgress(1), "Connecting to service..")
Dim Init = New ClassInit()
System.Threading.Thread.Sleep(600)
Private Sub StartWorker()
AddHandler _Worker.DoWork, AddressOf bw_DoWork
AddHandler _Worker.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler _Worker.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
bw.ReportProgress(CalcProgress(2), "Initialize User Settings")
' Init.InitUserConfig()
System.Threading.Thread.Sleep(600)
_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)
@@ -50,11 +79,12 @@ Public NotInheritable Class frmSplash
' 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, "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