Frage zu New Thread und Forms

  • VB.NET

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

    Frage zu New Thread und Forms

    Guten Morgen ;)
    Ich brauche eine Aufklärung zu einem Problem.
    Und zwar öffne starte ich einen neuen Thread mit einer abfrage, nun greift dieser Thread auf einen anderen Sub zu und öffnet eine Form.

    Kurz darauf blendet die Form kurz auf, und verschwindet wieder.
    Nun Frage ich mich ob das an dem Thread liegt, kann mir jemand auf die Sprünge helfen?
    (Nach meinem aktuellen stand nach müsste es an dem neuen Thread liegen.)
    Weil ohne den Thread öffnet sich die Form ideal.

    Danke!
    Ich habe es auch nur Indirekt gemacht, so sieht mein Code aus:

    VB.NET-Quellcode

    1. Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim nt As New Thread(AddressOf Login_attpt)
    3. nt.Start()
    4. End Sub
    5. Private Sub ChangeX(ByVal Text As String, ByVal cwl As Boolean, ByVal wds As Boolean)
    6. Label1.Text = Text
    7. If cwl = True Then WaitingCircle1.Start() Else WaitingCircle1.Stop()
    8. If wds = True Then
    9. 'Me.Close()
    10. End If
    11. End Sub
    12. Public Delegate Sub delegate_ChX(ByVal Text As String, ByVal cwl As Boolean, ByVal windows As Boolean)
    13. Public Sub Login_attpt()
    14. Me.Invoke(New delegate_ChX(AddressOf ChangeX), "Check User Account...", True, False)
    15. Dim Result As MySqlResultList = db.Query("SELECT * FROM `login` WHERE `userid` = '" & Textbox1.Text & "' AND `user_pass` = '" & (Textbox2.Text) & "'")
    16. If Result.Items.Count > 0 Then
    17. Me.Invoke(New delegate_ChX(AddressOf ChangeX), "Save Datas...", True, False)
    18. acceptdatas(Result.Items(0)("account_id"), Result.Items(0)("userid"), Result.Items(0)("user_pass"), Result.Items(0)("sex"))
    19. Me.Invoke(New delegate_ChX(AddressOf ChangeX), "-", False, True)
    20. Else
    21. Me.Invoke(New delegate_ChX(AddressOf ChangeX), "Login incorrect", False, False)
    22. MsgBox("Da stimmt was nicht")
    23. End If
    24. End Sub
    25. '// In Meinem Modul
    26. Public Sub acceptdatas(ByVal id As Integer, ByVal uname As String, ByVal password As String, ByVal email As String)
    27. User_ID = id
    28. User_name = uname
    29. User_password = password
    30. User_email = email
    31. comform.Show() ' Die Form die kurz darauf wieder verschwindet
    32. End Sub


    LG.L
    Ist vielleicht etwas unübersichtlich, also

    Der Button löst den neuen Thread aus, der neue Thread ist Login_attpt, über Delegate wird Text übergeben, und 2 If Abfragen bewältigt (Da sich am ende Byval Windows auch der Login Screen schließen soll.
    Vorher aber wird über acceptdatas(Result.Items(0)("account_id"), Result.Items(0)("userid"), Result.Items(0)("user_pass"), Result.Items(0)("sex")) einiges an mein Modul übergeben, welches diese Infos in Public Strings setzt.
    danach wird comform.show genutzt um nun endlich die Hauptform zu öffnen... und leider schließt diese sich direkt wieder (oder arbeitet im Hintergrund weiter, das verstehe ich nicht)
    PS: Das Projekt schließt sich erst nachdem alle Forms geschlossen wurden, das habe ich extra umgestellt, laut Debug Modus läuft es weiterhin, auch wenn man keine Form mehr sieht.

    Lawliet schrieb:

    Vorher aber wird über acceptdatas(Result.Items(0)("account_id"), Result.Items(0)("userid"), Result.Items(0)("user_pass"), Result.Items(0)("sex")) einiges an mein Modul übergeben, welches diese Infos in Public Strings setzt.
    danach wird comform.show genutzt um nun endlich die Hauptform zu öffnen...

    conform.Show wird allerdings von acceptdatas() aufgerufen, welches wiederum ohne Invoke/Delegate aus dem neuen Thread aus aufgerufen wird.

    lg SeriTools
    | Keine Fragen per PN oder Skype.