Variableninhalt aus Thread kommt nicht an

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Variableninhalt aus Thread kommt nicht an

    Hallo,

    ich stehe gerade etwas auf dem Schlauch und verstehe es nicht.
    Ich habe eine Form in der ich in einem Panel eine Unterform lade.

    VB.NET-Quellcode

    1. Friend Sub OpenChildForm(ByVal childForm As Form)
    2. If Not IsNothing(currentChildForm) Then
    3. currentChildForm.Close()
    4. currentChildForm = Nothing
    5. End If
    6. panel_Sub.Controls.Clear()
    7. currentChildForm = childForm
    8. childForm.TopLevel = False
    9. childForm.FormBorderStyle = FormBorderStyle.None
    10. childForm.Dock = DockStyle.Fill
    11. panel_Sub.Controls.Add(childForm)
    12. panel_Sub.Tag = childForm
    13. childForm.BringToFront()
    14. childForm.Focus()
    15. childForm.Show()
    16. End Sub


    In diesem ChildForm warte ich in einem Thread auf den Scan eines NFC-Tags
    Sobald er diesen erkannt hat, soll er diesen an die Mainform über eine Funktion zurück geben und die ChildForm schliessen.

    VB.NET-Quellcode

    1. stopRequest = True
    2. Dim stampRFID As String = dbModul.Get_StampFromRFID(cardID)
    3. Call mainForm.Set_PersNr(stampRFID)
    4. Me.Invoke(Sub() Me.Close())


    VB.NET-Quellcode

    1. Friend Sub Set_PersNr(ByVal stamp As String)
    2. If Me.InvokeRequired Then
    3. Me.Invoke(New Action(Of String)(AddressOf Set_PersNr), stamp)
    4. Else
    5. txtFocusbox.Text = stamp
    6. End If
    7. Debug.WriteLine("Textbox: " & txtFocusbox.Text)
    8. Debug.WriteLine("Variable: " & stamp)
    9. CloseNFCReader = True
    10. End Sub


    In der Debug-Ausgabe wird mir der NFC-Tag ausgegeben, setze ich einen Haltepunkt zeigt er mir auch auf txtFocusbox.Text einen Inhalt der Textbox.
    Im Programm selbst ist die Textbox aber leer. ?(

    Habe ich einen Denkfehler oder was mache ich falsch?

    Danke

    Code-Tags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @Montoyafan Wieso hast Du Deine Code als PHP-Code deklariert?
    Wir haben auch einen schnuckeligen VB.NET-Code-Tag.
    ====
    Ich nehme mal an, dass Du mit der scheiß ranz mistigen inkompatiblen völlig veralteten und völlig unbrauchbaren VB6-Kompatibilitäts-Instanz Deiner Form arbeitest.
    Fang an und verstehe diesen Thread:
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Ist mainForm im vorletzten Snippet eine von Dir selbst mit mainForm = New FormX erstellte Instanz
    oder
    heißt die Form Public Class mainForm?
    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 schrieb:

    @Montoyafan Wieso hast Du Deine Code als PHP-Code deklariert?
    Wir haben auch einen schnuckeligen VB.NET-Code-Tag.

    Upps, den habe ich total übersehen ^^


    RodFromGermany schrieb:

    Ich nehme mal an, dass Du mit der scheiß ranz mistigen inkompatiblen völlig veralteten und völlig unbrauchbaren VB6-Kompatibilitäts-Instanz Deiner Form arbeitest.

    Ja, da nimmst Du wohl richtig an.
    Irgendwie bleibt man da immer mal drin hängen. Ist nicht so einfach das ganz abzuschütteln, für mich zumindest :D
    Danke für den Link, das hat als Anstoß schon gereicht.

    RodFromGermany schrieb:

    Ist mainForm im vorletzten Snippet eine von Dir selbst mit mainForm = New FormX erstellte Instanz
    oder
    heißt die Form Public Class mainForm?


    Letzteres. :/
    btw: Me.Invoke(Sub() Me.Close()), sieht gut aus.
    Me.Invoke(New Action(Of String)(AddressOf Set_PersNr), stamp) sieht nach Krampf aus -> Me.Invoke(Sub() Set_PersNr(stamp))
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.