startform forladen lassen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    startform forladen lassen

    moin leute

    ich habe ein problem und zwar...
    ich habe eine form "startform" und im event load hab ich jede menge daten reingeschrieben die beim start ausgeführt werden müssen (subs/threds) die werden halt ausgeführt und erst dan startet das programm...
    das dauert aber mitlerweile ca 10 sekunden (ja wirklich)

    hat jemand eine idee wie ich das irgenwie gescheit vorladen lassen kann? ich brauche die daten sofort beim start. unteranderem werden optionen,updates,news mit der homepage vergliechen...

    danke schonmal
    Wenn du die Daten direkt beim Start brauchst, dann müssen sie ja auch da sein, wenn das Programm gestartet wird (Logik FTW). Wenn es 10 Sekunden braucht, bis diese Daten da sind, dann muss das Programm halt auch 10 Sekunden mit dem Starten warten, sonst sind die Daten beim Start ja eben nicht da. Und Internetzugriffe können halt schon mal ein bisschen Zeit beanspruchen, je nachdem wie schnell die Server sind.
    Die einzige Chance, da etwas zu optimieren, wäre eventuell im Code, wenn du da ineffizient gearbeitet hast.
    ok hier mal die codes... ich hoffe ich bekomm so alles hin...

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub loginform1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. AcceptButton = Button1
    3. cursorload()
    4. ' MsgBox(Smiliecodes.ForEach)
    5. ' Me.Cursor = New Cursor("cursor.cur")
    6. PictureBox1.BackgroundImage = Image.FromFile("launcher/images/logo.jpg")
    7. downloadclient_launcher.Proxy = Nothing
    8. Dim launchernews As String = downloadclient_launcher.DownloadString("http://www.mindora-arts.de/arts/sgn/client/news.txt")
    9. RichTextBox1.Text = launchernews
    10. Medien.SGNnewstag.Text = launchernews
    11. gamelistupdate()
    12. updatesuchen.Start()
    13. xmldatensub()
    14. benutzername.Text = username
    15. password.Text = userpw
    16. End Sub


    update
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Sub updatesuchensub()
    2. 'update überprüfung
    3. ' xmloptionen()
    4. 'version überprüfen abfabg
    5. If My.Computer.FileSystem.FileExists(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "\version.txt") Then ' Prüfen ob Datei vorhanden ist
    6. My.Computer.FileSystem.DeleteFile(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "\version.txt") ' Wenn ja löschen
    7. End If
    8. downloadclient_launcher.DownloadFile("http://www.mindora-arts.de/arts/sgn/client/version.txt", IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "\version.txt") ' Datei Neu Downloaden - Hier den Link zu der version.txt
    9. Dim Stream As New IO.StreamReader(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "\version.txt") ' Auslesen
    10. Dim z1 As String = Stream.ReadLine ' Inhalt der ersten Zeile wird in "z1" gespeichert
    11. Dim z2 As String = Stream.ReadLine ' Inhalt der zweiten Zeile wird in "z1" gespeichert
    12. Stream.Close()
    13. Dim lblt As Integer = Updater.Label2.Text
    14. If lblt < z1 Then ' Wenn Label2.Text kleiner ist als "z1" dann
    15. 'MsgBox("Update wurde fertiggestellt. Die neue Exe befindet sich in deinem Dokumenten Ordner im Ordner stshq", MsgBoxStyle.Information, "IMail") ' Nachricht wenn download erfollgreich war
    16. 'Popupversion.Show()
    17. Popupversion.ShowDialog()
    18. Else
    19. 'MsgBox("Kein Update gefunden", MsgBoxStyle.Information, "IMail") ' Nachricht wenn keine Updates vorhanden sind
    20. End If
    21. ' version überprüfen ende
    22. End Sub


    xmldatensub
    alle daten aus einer xml-datei lesen und speichern
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Sub xmldatensub()
    2. 'xml server daten anfang
    3. Dim xmlip As String
    4. Dim xmllauncherdesign As String
    5. Dim xmlport As String
    6. Dim xmlpw As String
    7. Dim xmluser As String
    8. Dim xmlbild As String
    9. Dim xmltsserver As String
    10. Dim xmlusername As String
    11. Dim xmluserpw As String
    12. Dim xmluseravatar As String
    13. Dim xmllaunchersound As String
    14. Dim xmllaunchersmilies As String
    15. Dim xmllauncherchatlog As String
    16. Dim xmllauncherbotspam As String
    17. Dim xmlsingleplayer_stalked_install As String
    18. Dim xmlsingleplayer_stalked_phat As String
    19. Dim xmlsingleplayer_stalked_exe As String
    20. Dim XDoc As New XmlDocument
    21. XDoc.Load("launcher/daten/optionen.xml")
    22. xmlip = XDoc.SelectSingleNode("//Optionen/Server/ip").InnerText
    23. ' MsgBox(xmlip)
    24. 'Dim ip As String = xmlip
    25. xmlport = XDoc.SelectSingleNode("//Optionen/Server/port").InnerText
    26. ' Dim port As String = xmlport
    27. xmlpw = XDoc.SelectSingleNode("//Optionen/Server/pw").InnerText
    28. 'Dim pw As String = xmlpw
    29. xmluser = XDoc.SelectSingleNode("//Optionen/Server/user").InnerText
    30. 'Dim user As String = xmluser
    31. xmlbild = XDoc.SelectSingleNode("//Optionen/Server/bild").InnerText
    32. 'Dim bild As String = xmlbild
    33. xmltsserver = XDoc.SelectSingleNode("//Optionen/Server/tsserver").InnerText
    34. 'Dim tsserverd As String = xmltsserver
    35. 'xml server daten ende
    36. xmlusername = XDoc.SelectSingleNode("//Optionen/User/name").InnerText
    37. xmluserpw = XDoc.SelectSingleNode("//Optionen/User/pw").InnerText
    38. xmluseravatar = XDoc.SelectSingleNode("//Optionen/User/avatar").InnerText
    39. xmllaunchersound = XDoc.SelectSingleNode("//Optionen/Launcher/sound").InnerText
    40. xmllauncherdesign = XDoc.SelectSingleNode("//Optionen/Launcher/design").InnerText
    41. xmllaunchersmilies = XDoc.SelectSingleNode("//Optionen/Launcher/smilies").InnerText
    42. xmllauncherchatlog = XDoc.SelectSingleNode("//Optionen/Launcher/chatlog").InnerText
    43. xmllauncherbotspam = XDoc.SelectSingleNode("//Optionen/Launcher/botspam").InnerText
    44. xmlsingleplayer_stalked_install = XDoc.SelectSingleNode("//Optionen/Singleplayer/stalked_install").InnerText
    45. xmlsingleplayer_stalked_phat = XDoc.SelectSingleNode("//Optionen/Singleplayer/stalked_phat").InnerText
    46. xmlsingleplayer_stalked_exe = XDoc.SelectSingleNode("//Optionen/Singleplayer/stalked_exe").InnerText
    47. ' xmluserpw = XDoc.SelectSingleNode("//Optionen/User/pw").InnerText
    48. 'Public ip As String
    49. port = xmlport
    50. ip = xmlip
    51. pw = xmlpw
    52. user = xmluser
    53. username = xmlusername
    54. userpw = xmluserpw
    55. useravatar = xmluseravatar
    56. tsserver = xmltsserver
    57. sound = xmllaunchersound
    58. design = xmllauncherdesign
    59. launcherchatlog = xmllauncherchatlog
    60. launchersmilies = xmllaunchersmilies
    61. launcherbotspam = xmllauncherbotspam
    62. 'rotz ende :D
    63. ' MsgBox(username)
    64. 'MsgBox("ftp://" & ip & "/bilder/")
    65. Singleplayer_stalked_install = xmlsingleplayer_stalked_install
    66. Singleplayer_stalked_phat = xmlsingleplayer_stalked_phat
    67. Singleplayer_stalked_exe = xmlsingleplayer_stalked_exe
    68. End Sub


    gamelistupdate
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Sub gamelistupdate()
    2. Dim gamelistupdatenew As Integer
    3. Dim gamelistupdateold As Integer
    4. Dim XDocgamelistnew As New XmlDocument
    5. XDocgamelistnew.Load("http://mindora-arts.de/arts/sgn/client/gamelist.xml")
    6. gamelistupdatenew = XDocgamelistnew.SelectSingleNode("//Games/gamelistupdate").InnerText
    7. ' MsgBox(gamelistupdatenew)
    8. Dim XDocgamelistalt As New XmlDocument
    9. XDocgamelistalt.Load("launcher/daten/games.xml")
    10. gamelistupdateold = XDocgamelistalt.SelectSingleNode("Games/gamelistupdate").InnerText
    11. ' MsgBox(gamelistupdateold)
    12. If gamelistupdateold = gamelistupdatenew Then
    13. Else
    14. ' My.Computer.Network.DownloadFile("http://www.mindora-arts.de/arts/sgn/client/gamelist.xml", _
    15. ' IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "/gamess.xml")
    16. If My.Computer.FileSystem.FileExists(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "/launcher/daten/games.xml") Then ' Prüfen ob Datei vorhanden ist
    17. My.Computer.FileSystem.DeleteFile(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "/launcher/daten/games.xml") ' Wenn ja löschen
    18. End If
    19. My.Computer.Network.DownloadFile("http://www.mindora-arts.de/arts/sgn/client/gamelist.xml", _
    20. IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) & "/launcher/daten/games.xml")
    21. '
    22. End If
    23. end sub


    ich dachte da an eine art startform die zuerst angezeigt wird. dan eine art loading-animaton läuft und wenn alles fertig is die hauptform angezeigt wird
    downloadlink mindora-arts.de/arts/sgn/client/sgn.zip
    Grade wenn Programme beim Start laden müssen benutzt man Splashscreens. Damit der Nutzer weiß "Ah es lädt etwas" und nicht "Hmm startet garnet" und dann klickt er wie n Bescheuerte bis auf einmal 20 Instanzen aufpoppen. Klemmt deine Shifttaste eigentlich ?

    MVN050 schrieb:

    eine art loading-animaton läuft
    Hört sich nach einem klaren Fall für Multithreading bzw. Async-Working an. Der WebClient stellt bereits Methoden zur Verfügung, die asynchrone Downloads erlauben und dabei Fortschritte über Events senden. Für den Rest kannst du Backgroundworker und deren ReportProgress-Methode verwenden.
    Mach unbedingt OPTION STRICT ON. Nutze keine Methoden und Funktionen aus dem My-Namespace. Nutze, wie schon gesagt wurde, Async-Methoden oder ggf. extra Threads, um Vorgänge auszulagern. Das, was Du im Moment machst, ist nicht wartbar, erweiterbar und eine Fehlersuche ist der Horror.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o