Thread andere form öffnen aktuelle schliessen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von FlashTek.

    Thread andere form öffnen aktuelle schliessen

    moin leute

    und zwar folgendes problem
    ich hab ein Thread (wenn man das so nennt) gebaut... so wenn man also auf ein button klickt wird ein befehl an eine phpdatei geschickt und abgewartet was auf der nächsten seite steht (du bist eingeloggt) wenn dies kommt soll sich die hauptform (loginforum) schliessen und die andereform (main/lobby-form) öffnen
    allerdings geht das nich...
    wenn ich das ganze ohne Thread mache geht es ohne probleme aber mit geht es nich :(
    gibt es da was das ich berücksichtigen muss beim formöffnen von einem Thread herraus und das aktuelle schliessen?

    VB.NET-Quellcode

    1. Dim hplogin As New Thread(AddressOf userlogin)
    2. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. hplogin.Start()
    4. End Sub


    naja und der tred ansich is ein megacode eben aber ich poste ihn trotzdem mal

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Sub userlogin()
    2. nick = benutzername.Text
    3. user = benutzername.Text
    4. pw = password.Text
    5. Dim doc As New XmlDocument()
    6. doc.Load("launcher/daten/optionen.xml")
    7. Dim element As XmlElement = doc.SelectSingleNode("//Optionen/User/name")
    8. element.InnerText = user
    9. Dim element2 As XmlElement = doc.SelectSingleNode("//Optionen/User/pw")
    10. element2.InnerText = pw
    11. doc.Save("launcher/daten/optionen.xml")
    12. Dim Request As HttpWebRequest = CType(WebRequest.Create("http://xxxxxx.de/projekte/gtasa/test/index.php?user-login"), HttpWebRequest)
    13. Request.Method = "POST"
    14. Request.ContentType = "application/x-www-form-urlencoded"
    15. 'Dim Post As String = "wdlink=&email=" & User & "pass=" & Pwd & "user_login_sub=Login"
    16. ' Dim Post As String = "wdlink=index.php%3Fnews&email=marvinf@online.dee&pass=qsbp1992&cookie=on&user_login_sub=Login"
    17. Dim Post As String = "wdlink=index.php%3Fnews&email=" & benutzername.Text & "&pass=" & password.Text & "&cookie=on&user_login_sub=Login"
    18. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    19. Request.ContentLength = byteArray.Length
    20. Dim DataStream As Stream = Request.GetRequestStream()
    21. DataStream.Write(byteArray, 0, byteArray.Length)
    22. DataStream.Close()
    23. Dim Response As HttpWebResponse = Request.GetResponse()
    24. DataStream = Response.GetResponseStream()
    25. Dim reader As New StreamReader(DataStream)
    26. Dim ServerResponse As String = reader.ReadToEnd()
    27. reader.Close()
    28. DataStream.Close()
    29. Response.Close()
    30. If InStr(ServerResponse, "Du bist nun eingeloggt") Then
    31. MessageBox.Show("Login erfolgreich! du wirst weitergeleitet!")
    32. lobby.ShowDialog()
    33. Me.Visible = False ' Form1.benutzername.Text = nick
    34. Else
    35. MessageBox.Show("Falsche Logindaten")
    36. End If
    37. End Sub
    Was geht denn nicht? Ich schätze mal, dass er die anzeigt, dass er keinen threadübergreifenden Zugriff auf die nächste Form durchführen kann. Falls ja: schau dir mal Delegates an.

    MVN050 schrieb:

    VB.NET-Quellcode

    1. doc.Load("launcher/daten/optionen.xml")
    ebenso doc.Save(...), ich würde der Prozedur den vollständigen Pfad übergeben.

    VB.NET-Quellcode

    1. Dim path = Application.StartupPath
    2. ' und
    3. path = System.IO.Path.Combine(...)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    nein das ist ja nich das problem... wenn ich es als button aufrufe geht es (form läd und bleibt dan hängen

    @FlashTek
    nein! er zeigt mir absolut nix an... der thread befindet sich in einer form nicht in einem modul...

    @ErfinderDesRades
    wenn ich es wüsste :D die form kommt einfach nicht und die hauptform schiesst sich nicht...



    naja ich hab das ganze jetzt mal als modul gemacht, und da kommtdan das problem wie @FlashTek schon gesagt hat das es keine formübergreifende steuerelemente bedienen kann weil es kein siglethread ist oder so ähnlicher mist eben... nur da bleibt es schon direkt vorne beim ersten eintrag hängen :(

    MVN050 schrieb:

    ich hab das ganze jetzt mal als modul gemacht
    Modul ist ein Relikt aus der alt-VB6-Zeit, unter VB.NET nur zur Befehlserweiterung verwendbar.
    Wie wäre es mit einem geordneten Beenden des Threads mit einer Info (Event), dass das hauptfenster nun so und so zu verfahren hat?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du kannst aus einem Thread nicht auf Controls zugreifen, die in einem anderen Thread erstellt worden sind. Daher musst du einen Delegaten nutzen. Guck mal, ob das dir hilft.