Form friert trotz Delegate ein.

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Xenon.

    Form friert trotz Delegate ein.

    Moin

    Ich wollte einen Thread erstellen damit die Form nicht einfriert beim abarbeiten...

    Aber in einem neuen Thread kann der Thread ja nicht auf Controls zu greifen...

    also habe ich

    VB.NET-Quellcode

    1. Public Delegate Sub thread()


    Und dann halt später..

    VB.NET-Quellcode

    1. Dim start= New thread(AddressOf startthread)
    2. start.Invoke()



    Sooo Resultat: Form friert trotzdem ein.


    Was zum Teufel noch mal mache ich falsch ? :D
    @Gutelaunetyp: DoubleBuffered ist für das zeichnen...

    @Xenon, das ist ein Delegate und kein Thread...

    VB.NET-Quellcode

    1. Dim start As New System.Threading.Thread(AddressOf startthread)
    2. start.Start()
    3. Sub startthread()
    4. 'Deine aktionen die abgearbeitet werden sollen
    5. 'und bei Zugriff auf Controls erst ein Delegate verwenden...
    6. End Sub
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ok.. Anscheinend verstehe ich da irgendetwas falsch..

    Also so ist mal ein Beispiel

    VB.NET-Quellcode

    1. Public Delegate Sub test()



    VB.NET-Quellcode

    1. Dim start As New System.Threading.Thread(AddressOf startth)
    2. start.Start()


    VB.NET-Quellcode

    1. Sub startth()
    2. Dim info As New test(AddressOf delegate)
    3. info.Invoke()
    4. End Sub



    VB.NET-Quellcode

    1. Sub delegate()
    2. Textbox1.text = "Hier wird jetzt auf ein Control zugegriffen"




    Ungefähr jetzt mal so..


    Mann ist das peinlich :S

    Was ist nun wieder falsch ?
    dass du namen wie "delegate" verwendest, die eigt. gesperrt sind..und mach einfach statt info.Invoke usw.
    FormName.Invoke(New test(AddressOf delegate))

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich habe zwar noch nie mit Threads gearbeitet sondern nehme immer den BackgroundWorker, aber ich würde das nun so machen

    VB.NET-Quellcode

    1. Private Delegate Sub TestA(ByVal Text As String)
    2. Private Sub Button_Click(..) Handles Button1.Click
    3. Dim start As New System.Threading.Thread(AddressOf StartThread)
    4. start.Start()
    5. End Sub
    6. Private Sub StartThread()
    7. Me.Invoke(New TestA(AddressOf Test), New Object() {"Hallo ich bin ein String"})
    8. End Sub
    9. Private Sub Test(ByVal Text As String)
    10. Label1.Text = Text
    11. End Sub