Halloj! Du har gjort fel! Hej Johan! Jag tror problemet beror på att formuläret inte visas innan Load-händelsen har körts klart. Testa att lägga koden som gör allt arbete i en annan klass. Visa sedan formuläret med .Show() i början av koden, då borde det fungera bättre. Jag gjorde helt enkelt så att jag fimpade Splash screenen och gjorde en form som startade först, på så vis så stressade den inte igenom utan man kunde hålla lite koll på vad som hände och när. Nu funkar det jättebra..Splash screen visas inte.. :(
Har en splash screen, och i denna så försöker jag köra lite tester (validera sökvägar, databaskopplingar)
och köra en uppdatering av applikationen om så krävs.
Nu till problemet. I slutet av proceduren har jag skrivit
<code>
System.Threading.Thread.Sleep(3000)
</code>
Men splash screenen visas inte, den blinkar till som snabbast när applikationen startar. Men jag vill ju att den ska vara synlig hela tiden. Vad är felet?? Någon som vet?
//JohannesSv: Splash screen visas inte.. :(
Allvarligt så behövs det mer information för att kunna avgöra vad som är fel. En vild gissning är att du behöver köra Application.DoEvents() för att formuläret ska ritas upp.
/JohanSv:Splash screen visas inte.. :(
Här kommer den kompletta sourcen för just den filen
<code>
Imports System.Windows.Forms
Imports System.IO
Imports System.Net
Imports System.Data
Imports System.Data.SqlClient
Public NotInheritable Class starter
Dim seconds As Integer = 5
Dim status As String
Dim wcu As New WebClient
Private Sub starter_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Start status
status = "App loader started"
Me.lblStatus.Text = status
Application.DoEvents()
status = status & "Version " & Application.ProductVersion & " found!" & vbCrLf
Me.lblStatus.Text = status
Application.DoEvents()
Updater()
End Sub
Private Sub Updater()
status = status & "Downloading update information" & vbCrLf
Me.lblStatus.Text = status
Application.DoEvents()
Try
Dim wc As New System.Net.WebClient
Dim file As New System.IO.StreamReader(wc.OpenRead("http://www.testdoman.com/ver/updates/Update.txt"))
Dim filecont As String = file.ReadToEnd
If filecont > Application.ProductVersion Then
'Update needed.
status = status & "Latest version is " & filecont & ", comparing " & vbCrLf
Me.lblStatus.Text = status
file.Close()
wc.Dispose()
Application.DoEvents()
doupdate(filecont)
Application.DoEvents()
Else
'No update needed.
status = status & "Your version is up to date. Skipping update." & vbCrLf
Me.lblStatus.Text = status
status = status & "Running database validation" & vbCrLf
Me.lblStatus.Text = status
Application.DoEvents()
DBConnTest()
System.Threading.Thread.Sleep(3000)
End If
Catch ex As Exception
If MessageBox.Show("The application halted due to an unspecified error" & vbCrLf & "The application will now quit", "Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Error) = Windows.Forms.DialogResult.OK Then
Application.Exit()
End If
End Try
End Sub
Private Sub DBConnTest()
Try
Dim conn As SqlConnection
conn = New SqlConnection(My.Settings.BoxCargoPE)
conn.Open()
conn.Close()
status = status & "Database connection successful!" & vbCrLf
Me.lblStatus.Text = status
Application.DoEvents()
Catch ex As Exception
status = status & "Database connection unsuccessful, application exiting!" & vbCrLf
Me.lblStatus.Text = status
If MessageBox.Show("Cannot connect to database!" & vbCrLf & "This application will now exit", "Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Error) = Windows.Forms.DialogResult.OK Then
Application.Exit()
End If
End Try
End Sub
Private Sub doupdate(ByVal ver As String)
status = status & "Updating application to version " & ver & vbCrLf
Me.lblStatus.Text = status
status = status & "Downloading application version " & ver & vbCrLf
Me.lblStatus.Text = status
Application.DoEvents()
Downloadupdate()
Application.DoEvents()
End Sub
Private Sub Downloadupdate()
AddHandler wcu.DownloadProgressChanged, AddressOf ProgressChanged
AddHandler wcu.DownloadFileCompleted, AddressOf DownloadFileCompleted
ProgressBar1.Visible = True
ProgressBar1.Value = 0
lblProg.Visible = True
wcu.DownloadFileAsync(New Uri("http://www.testdoman.com/ver/updates/test.bin"), IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) + "\test.bin")
End Sub
Private Sub ProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
ProgressBar1.Value = e.ProgressPercentage
lblProg.Text = e.ProgressPercentage.ToString
End Sub
Private Sub DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
System.Diagnostics.Process.Start(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) + "\updater.exe")
Application.Exit()
End Sub
End Class
</code>Sv: Splash screen visas inte.. :(
/JohanSv:Splash screen visas inte.. :(
Tack för din hjälp! :)
//Johannes